Перейти к содержимому

Фотография

получение данных из Database в QTP 8.2


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 Alex_Kot

Alex_Kot

    Новый участник

  • Members
  • Pip
  • 4 сообщений

Отправлено 22 сентября 2006 - 10:57

Добрый день

У меня следующая проблема

Хочу запросить данные из базы данных, в базе таблица 2 столбца и 20 строк.

Делаю Database output value, QTP мне предлагает сохранить данные в DAtaTable но только в первую строку? получается мне надо 40 столбцов в DataTable занимать. Есть более простой путь получить значения из базы, чтобы с ними можно было работать? Можно например Database output value сохранить в массиве? как это сделать?

Подскажите пожалуйста
  • 0

#2 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 22 сентября 2006 - 13:26

Работайте через ADO (Microsoft ActiveX Data Objects). Вся нужная информация есть в MSDN. Примеры есть в QuickTest Plus (eго надо установить)
  • 0
Best regards,
Майк.

#3 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 22 сентября 2006 - 15:25

Нашел библиотеку с примерами (лежит в CodeSamplesPlus) - аттачу здесь.

А ещё, вот мой пример (для Oracle) - получение результатов запроса в массив.
Function dbtableGetAs2DArray(UName,UPwd,Source,SQL)
	'Returns 2- dim array of Table data, found in DB
	'1-st dimension = rows, 2 = fields
	'Example: xArr =  GetDBDataArr_A("SELECT ORDERID,MANAGER FROM ORDERS WHERE MANAGER LIKE 'Ivan%'")


    Dim RS, sql1, xArr, i,j,k,rCnt,cCnt

	Set CNN = CreateObject("Adodb.Connection")
	With CNN
  .ConnectionString = "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID="+UName+";Password="+UPwd+";Data Source="+Source
  .Open
	End With

	
	sql1 = "SELECT COUNT(*) FROM (" & SQL  & ")"
	
    Set RS = CNN.Execute(sql1)
	rcnt = clng(RS.Fields(0).Value)

	If rcnt = 0 then
  sql_ExecAsArray2D = empty2DArray()
   exit function
	end if   
	
	Set RS = CNN.Execute(SQL)
	ccnt = RS.Fields.Count

	Redim xArr(rcnt,ccnt-1)

	For i = 0 to ccnt-1
  xArr(0,i)=RS.Fields(i).Name
	Next

	i = 1
    
	With RS
  Do
 	 for k = 0 to ccnt - 1
    xArr(i, k) = .Fields(k).Value
 	 next 
 	 .MoveNext
 	 if .EOF then Exit Do
 	 i = i + 1
  Loop
	End With

	Set RS=Nothing

	dbtableGetAs2DArray = xArr
 CNN.Close()
End Function

Прикрепленные файлы

  • Прикрепленный файл  dbsamplelib.txt   11,23К   90 Количество загрузок:

  • 0
Best regards,
Майк.

#4 Derzai

Derzai

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Сергей

Отправлено 28 сентября 2006 - 16:14

А как получить количество столбцов в БД с их именами...

Бьюсь, никак не получается. Подскажите плз..
  • 0

#5 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 28 сентября 2006 - 16:26

Я с самого начала написал - смотрите MSDN по ADO.

Имя столбца
RS.Fields(k).Name
Количество
RS.Fields.Count (или Length - не помню)

RS -объект типа Reportset
k - номер столбца

См. код который я привёл в предыдущем сообщении.
  • 0
Best regards,
Майк.

#6 Derzai

Derzai

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Сергей

Отправлено 28 сентября 2006 - 17:03

Спасибо огромное.. Все работает :)
  • 0

#7 Derzai

Derzai

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Сергей

Отправлено 02 октября 2006 - 11:37

ПОдскажите пожалуста..Как добавить в ячейку БД запись..

RSRes("TD_executing").Value = date &" " & time

вот так вот не хочет.. :( Пишет:

Current Recordset does not support updating. This may be a limitation of the provider, or the selected locktype.

Заранее спасибо.
  • 0

#8 mandarinka

mandarinka

    Новый участник

  • Members
  • Pip
  • 27 сообщений
  • Город:Москва

Отправлено 27 сентября 2007 - 11:41

Работайте через ADO (Microsoft ActiveX Data Objects). Вся нужная информация есть в MSDN. Примеры есть в QuickTest Plus (eго надо установить)

Что такое QuickTest Plus и где его можно скачать
  • 0

#9 Mike

Mike

    Консультант

  • Members
  • PipPipPipPipPipPip
  • 1 079 сообщений
  • Город:Москва

Отправлено 01 октября 2007 - 07:32

QuickTest Plus - дополнительные материалы, которые шли с QTP6.5-8.2 - ссылка на них есть в Start>Programs>QuickTest Proffesional>... (точно не помню дальше - где, но называется QuickTest Plus) . Начиная с версии 9, называется "Сode Samples Plus" - папка с таким называнием есть в директории, где установлен QTP, кроме того, документация есть в файле помощи: Start>QuickTest Proffesional>Documentation>Code Samples Plus.
  • 0
Best regards,
Майк.


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных