Проблемы с открытием набора записей в VB Script при подключении к DB2 через ADO - PullRequest
1 голос
/ 09 июля 2011

Я пытаюсь использовать 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

1 Ответ

0 голосов
/ 11 июля 2011

Это выстрел в темноте, но по моему опыту у меня обычно были лучшие результаты при использовании 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, чтобы на самом деле можно было выводить результаты отладки на консоль.

...