-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Странная фигня с прилинкованными таблицами

Вторник, 24 Июля 2018 г. 12:26 + в цитатник
Уважаемый форум,

Нужна помощь: есть Акс 2016 с линкованными таблицами с SQL Server. При старте приложения происходит обмен данными между локальными и линкованными таблицами в цикле по всем линкованным таблицам. Проблема: при первом проходе первая линкованная таблица ("ACC_BLEND_ARCHIVE") выдает ошибку ODBC-call failed. Если ее пропустить в коде, все остальные таблицы проходят нормально. Если любую линкованную таблицу дернуть руками перед выполнением обмена, тоже все проходит нормально.

Пробую обновить связи перед выполнением обмена данными - не помогает. Пробую дернуть таблицу рекордсетом - тот же эффект. Есть идеи?

For Each tb In CurrentDb.TableDefs
     If Left(tb.Connect, 4) = "ODBC" Then
       tb.Connect = "ODBC;DRIVER=SQL Server Native Client 10.0;SERVER=Server1;;Trusted_Connection=Yes;APP=Microsoft Office 2016;DATABASE=DB1;"
       tb.RefreshLink
    End If
Next tb

For Each tb In CurrentDb.TableDefs
    If Left(tb.Connect, 4) = "ODBC" Then
        tbl_name = Right(tb.Name, Len(tb.Name) - 4)
        Select Case tbl_name
        Case "ACC_CQI"
            db.Execute ("DELETE FROM " & tb.Name & " WHERE(CLV_MOPI_NO in (SELECT CLV_MOPI_NO FROM " & tbl_name & " WHERE(RECORD_VERSION=-1)))")
            db.Execute ("INSERT INTO " & tb.Name & " SELECT * FROM " & tbl_name & " WHERE(RECORD_VERSION=-1)"), dbSeeChanges
            db.Execute ("UPDATE " & tbl_name & " SET RECORD_VERSION=0")
        Case [b]"ACC_BLEND_ARCHIVE"[/b], "ACC_BLEND_ARCHIVE_ORT", "ACC_BLND"
            rs.Open ("SELECT * FROM " & tb.Name & ""), db, adOpenDynamic, adLockOptimistic
            If rs.EOF = False Then rs.MoveLast
            rs.Close
            db.Execute ("INSERT INTO " & tb.Name & " SELECT * FROM " & tbl_name & " WHERE(RECORD_VERSION=-1)"), dbSeeChanges                          <= тут ошибку выдает
            db.Execute ("UPDATE " & tbl_name & " SET RECORD_VERSION=0")
        End Select
    End If
Next tb

http://www.sql.ru/forum/1299472/strannaya-fignya-s-prilinkovannymi-tablicami


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку