Проблемы с открытием набора записей в VB Script при подключении к DB2 через ADO

Я пытаюсь использовать vbscript для подключения к базе данных iSeries DB2 через ADO, чтобы выполнить очень простой поиск данных, но столкнулся с парой странностей.

Если я установлю расположение курсора в соединении на стороне сервера, то процесс wscript «исчезнет» после шага 3 (см. ниже). Если я устанавливаю CursorLocation как локальный, я получаю сообщение «неопределенная ошибка» (80004005) при попытке открыть набор записей.

Если я скопирую код в VB (и внесу небольшие изменения в синтаксис), то все будет работать правильно, поэтому это не может быть разрешение на доступ к базе данных. Я пробовал извлекать данные из различных файлов, чтобы убедиться, что имя поля не является защищенным значением. Я проверил и убедился, что CCSID файла на сервере равен 65535 (что исключает необходимость перевода строки подключения). Теперь я в тупике.

У кого-нибудь есть идеи?

Код выглядит следующим образом:

msgbox "1. Started"
set currcon = getConnection()
currcon.CursorLocation = 3

msgbox "2. Connection Created"
set rcdset = getRcdSet("Select field from Library.file", currcon)
rcdset.open

msgbox "3. Recordset Open"
Moo = rcdset.fields(0)

msgbox "4. Ended"


Public Function getRcdSet(stmt, oCon)

'Basic declarations
Dim RcdSet
Set RcdSet = createobject("ADODB.Recordset")

'Create the record set
RcdSet.ActiveConnection = oCon
RcdSet.Source = stmt

'Set the return value
Set getRcdSet = RcdSet

End Function

Public Function getConnection()

'Basic connection details
Dim CurrCon
Dim ConString

'Build the connection string
ConString = "Driver={Client Access ODBC Driver (32-bit)};System=XXXXXXX;Uid="
ConString = ConString & "XXXXX"
ConString = ConString & ";Pwd="
ConString = ConString & "XXXXX"

'Create and open the connection
Set CurrCon = CreateObject("ADODB.Connection")
CurrCon.ConnectionString = ConString
CurrCon.Open

'Apply the return value
Set getConnection = CurrCon

End Function

person Porl    schedule 09.07.2011    source источник


Ответы (1)


Это съемка в темноте, но по моему опыту у меня обычно были лучшие результаты при использовании Command.

Dim cmd
Set cmd = createobject("ADODB.Command")
Set cmd.ActiveConnection = currcon
cmd.CommandText = "Select somecol from sometable"
cmd.prepared = true
Set rset = createobject("ADODB.Recordset")
rset.open cmd

У меня больше нет доступа к каким-либо средствам для тестирования, извините.

В целях отладки я обычно предпочитал использовать cscript, а не wscript, чтобы я мог вывести результаты отладки на консоль.

person Dan    schedule 11.07.2011