Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Странная фигня с прилинкованными таблицами  [new]
IFK
Member

Откуда: Гондурас
Сообщений: 999
Уважаемый форум,

Нужна помощь: есть Акс 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
24 июл 18, 12:26    [21597506]     Ответить | Цитировать Сообщить модератору
 Re: Странная фигня с прилинкованными таблицами  [new]
LightN
Member

Откуда:
Сообщений: 189
IFK,
У меня такое было. Оказалось, что на прилинкованных таблицах было всё ОК, а на прилинкованных View - проблема. При перелинковке на View пропадали куда-то ключевые индексы. Сохранил, восстановил, всё заработало.
For Each ...
       txt = "CREATE UNIQUE INDEX PrimaryKey On [" & Me![TableName] & "] (" & Me![PrimaryIdFields_IDX] & ") With PRIMARY;"
       CurrentDb.Execute txt, dbFailOnError
Next ...
7 авг 18, 10:54    [21632575]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить