Сценарий DB2 - vba падает при "Если RS.BOF И RS.EOF Тогда" - PullRequest
0 голосов
/ 28 февраля 2020

У нас есть пара скриптов загрузки, которые загружают данные из Excel (работа выполняется в файлах Excel) в нашу базу данных iSeries DB2. Они работали безупречно в течение нескольких лет. Все идет нормально. С января второй человек взял на себя управление сценариями, и теперь они не работают для этого человека. Для меня не проблема, работает без нареканий. Как только второй человек пытается запустить программу, Excel вылетает при первом If в коде:

If RS.BOF и RS.EOF Then

It Иногда можно пройти программу, но не всегда. Пошагово, пока RS.Open не покажет ничего плохого в параметрах BOF и EOF.

Если бы я мог, я бы прекратил использовать Excel для такого рода вещей и перевел бы все на R. Но это невозможно, поэтому я должен найти что не так со сценарием. Мое единственное предположение пока что то, что это что-то с драйверами, и поэтому мой вопрос. Что касается строк подключения VBA и драйверов ISeries ODB C, нужно ли что-то изменить в коде?

Код, который использует этот макет и просто открывает и закрывает набор записей, доказал свою эффективность для всех нас. Может быть, мне просто нужно переписать программы с нуля. Не невозможный подвиг, а скорее то, чего я бы избежал, если бы смог.

Dim cnDB As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim conStr As String


    'Open a connection to ISeries
    conStr = "Driver={ISeries Access ODBC Driver};System=oursys;Uid=kUid;Pwd=kPass;Library = ourschema"
    Set cnDB = CreateObject("ADODB.Connection")
    Set RS = CreateObject("ADODB.Recordset")
    cnDB.ConnectionString = conStr
    cnDB.Open


    SQL_str = "Select * from TEST.TESTTABLE"


    Debug.Print SQL_str

    RS.Open SQL_str, cnDB, adOpenStatic, adLockOptimistic



    If RS.BOF And RS.EOF Then
...