RUS  ENG 

ошибка в макросе с запросом к БД

Страницы: 1
RSS
ошибка в макросе с запросом к БД
 
Добрый день !
В Zulu БД подключена в источнике данных со строкой
"Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=k_g;Password=k;Data Source=gaz", запросы в формах работают.

Аналогичный запрос в 1С выполняется , здесь непонятная ошибка выполнения VBScript в методах ADODB.Recordset ?

Sub ora
Dim strCon
Dim Con
Dim Rec
Dim Com
Dim strSQL
Dim strRes

strSQL="select NAME from gg_serts"

'strConnect="Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=k_g;Password=k;Data Source=gaz"

strCon="Provider=OraOLEDB.Oracle.1; Data Sourse=(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=servergg)(PORT=1521)))(CONNECT_DATA=(SID=gaz)(SERVER=DEDICATED)));User Id=k_g; Password=k;"

Set Con=createObject("ADODB.Connection")
Con.ConnectionString=strCon
Con.Open
Set Com=createObject("ADODB.Command")
Com.ActiveConnection=Con
Set Rec=CreateObject("ADODB.Recordset")
Com.CommandText= strSQL
Rec=Com.Execute

Do While Not Rec.EOF -ошибка Объект не поддерживает метод Rec.EOF

strRes=Rec.Fields("NAME").Value -ошибка Объект не поддерживает метод Rec.Fields
MsgBox strRes
Rec.MoveNext

Loop

Rec.Close
Con.Close
Com.Close
End Sub
Изменено: alw39 - 05.08.2025 22:29:55 (ошибка)
 
alw39, добрый день!
Проблема скорее всего в следующем:
  1. Строка Set Rec=CreateObject("ADODB.Recordset") не нужна, т.к. переменная Rec следом заполняется новым объектом Recordset, возвращаемым методом Execute;
  2. А в строке с вызовом Execute добавить Set, т.к. присваивается объект:
    Set Rec=Com.Execute

Однако нужно ещё учесть, что метод Execute может Recordset и не вернуть, допустим из-за ошибки в запросе. Тогда Rec также может оказаться не заполненной объектом Recordset.
Изменено: Дмитрий Озеров - 08.08.2025 12:11:09
 
Добрый день!
Спасибо! Так работает.
Страницы: 1