Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обновление таблиц
 
 автор: user12345   (17.05.2013 в 06:49)   личное сообщение
 
 

Добрый день,
У меня программа разделена на две части. В одном находятся таблицы а в другом формы и т.д.
В вторую базу перелинкованы таблицы из первого.
Как сделать так чтобы при открытие основной программы автоматически снова обновлялись линки.

  Ответить  
 
 автор: snipe   (17.05.2013 в 07:02)   личное сообщение
 
 

как-то вы не тем озадачились
как только вы запускаете вторую базу линки должны подключится автоматом

или я опять ни чего не понял
с чего вдруг возник такой вопрос?
теряется соединение?

  Ответить  
 
 автор: user12345   (17.05.2013 в 10:52)   личное сообщение
 
 

База состоит из двух файлов аксес. Один из них база данных, а другой является самой рабочей программой.
Как вы уже поняли теряются соединения.
Это происходит только в тех машинах, где установлен access 2013, а в ранних версиях офиса все работает нормально.
Казус в том, что линки теряются не у всех таблиц, а лишь у некоторых

  Ответить  
 
 автор: Дядя Федор   (17.05.2013 в 14:05)   личное сообщение
 
 

Самое простое

Public Sub AccessLink()
   Dim dbs As Database
    Dim tdf As TableDef
    Dim sBase$
    Set dbs = CurrentDb
    sBase = "E:\Server\SRV.mdb"
    MsgBox "Линкую  " & sBase &  "-" & dbs.TableDefs.Count  & " таблиц"
    For Each tdf In dbs.TableDefs
rem    Debug.Print "" & tdf.Connect
        If Len(tdf.Connect) > 0 Then
            tdf.Connect = ";DATABASE=" & sBase
            tdf.RefreshLink
        End If
    Next tdf
    MsgBox "OK" & vbCr & sBase, vbOKOnly + vbInformation, ""
End Sub



А вообще, см. помощь на Connect,RefreshLink

  Ответить  
 
 автор: user12345   (18.05.2013 в 08:02)   личное сообщение
 
 

Уважаемый Дядя Федор

Вставил функцию в программу, не хочет работать, ругается на
rem Debug.Print "" & tdf.Connect

Буду благодарен если решите эту проблему.

  Ответить  
 
 автор: Дядя Федор   (20.05.2013 в 07:56)   личное сообщение
 
 

rem это комментарий, эквиваелнтно ' (апостроф). Возможно в 2013 уже не применяется...

Debug.Print "" & tdf.Connect - отладочный код.

Эту строку можно так
Debug.Print "" & tdf.Connect - в окне отладки увидите свои коннекты
или
' Debug.Print "" & tdf.Connect - закомментировано.

Можно вообще удалить :)

  Ответить  
 
 автор: user12345   (19.05.2013 в 17:57)   личное сообщение
10 Кб.
 
 

И снова добрый день.
После поисков проблем выяснилось что работает с ошибками одно выражение в запросе (запрос на обновление), точнее сказать то работает то нет, что и по цепочке влияет на все.
'Left(DLookUp("PR ","PRBL ","[PRID] =" & SmbCount([ACCKUT],"!")),SmbCount([ACCKUT],"!")*2) & [ACC]'

Может посоветуйте, как написать по-другому, чтобы результат был тот же.
В добавок ещё раз повторяюсь, проблема только в access 2013, в других версиях access-ов выражение работает нормально.

  Ответить  
 
 автор: Explorer   (19.05.2013 в 22:42)   личное сообщение
 
 

безотносительно самой вашей проблемы,
нельзя было-бы переписать выражение?

лефт, длукап, каунт, коннактенация...
что-то как-то слишком, очевидно...

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

поп

  Ответить  
 
 автор: Explorer   (19.05.2013 в 22:43)   личное сообщение
 
 

да...
уже аксесс 2013...

да-а-а...

  Ответить  
 
 автор: user12345   (27.05.2013 в 10:26)   личное сообщение
 
 

Решил проблему.
Оказывается, в аксесс 2013 некорректно работает функция DLookUp.
Пришлось в место функции промежуточно добавить запрос на обновление. Так что использовать аксесс 2013 не рекомендую, по крайнем мере до выхода сервис пака.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList