|
|
|
| Добрый день,
У меня программа разделена на две части. В одном находятся таблицы а в другом формы и т.д.
В вторую базу перелинкованы таблицы из первого.
Как сделать так чтобы при открытие основной программы автоматически снова обновлялись линки. | |
|
| |
|
|
|
| как-то вы не тем озадачились
как только вы запускаете вторую базу линки должны подключится автоматом
или я опять ни чего не понял
с чего вдруг возник такой вопрос?
теряется соединение? | |
|
| |
|
|
|
| База состоит из двух файлов аксес. Один из них база данных, а другой является самой рабочей программой.
Как вы уже поняли теряются соединения.
Это происходит только в тех машинах, где установлен access 2013, а в ранних версиях офиса все работает нормально.
Казус в том, что линки теряются не у всех таблиц, а лишь у некоторых | |
|
| |
|
|
|
| Самое простое
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 | |
|
| |
|
|
|
| Уважаемый Дядя Федор
Вставил функцию в программу, не хочет работать, ругается на
rem Debug.Print "" & tdf.Connect
Буду благодарен если решите эту проблему. | |
|
| |
|
|
|
| rem это комментарий, эквиваелнтно ' (апостроф). Возможно в 2013 уже не применяется...
Debug.Print "" & tdf.Connect - отладочный код.
Эту строку можно так
Debug.Print "" & tdf.Connect - в окне отладки увидите свои коннекты
или
' Debug.Print "" & tdf.Connect - закомментировано.
Можно вообще удалить :) | |
|
| |
|
10 Кб. |
|
| И снова добрый день.
После поисков проблем выяснилось что работает с ошибками одно выражение в запросе (запрос на обновление), точнее сказать то работает то нет, что и по цепочке влияет на все.
'Left(DLookUp("PR ","PRBL ","[PRID] =" & SmbCount([ACCKUT],"!")),SmbCount([ACCKUT],"!")*2) & [ACC]'
Может посоветуйте, как написать по-другому, чтобы результат был тот же.
В добавок ещё раз повторяюсь, проблема только в access 2013, в других версиях access-ов выражение работает нормально. | |
|
| |
|
|
|
| безотносительно самой вашей проблемы,
нельзя было-бы переписать выражение?
лефт, длукап, каунт, коннактенация...
что-то как-то слишком, очевидно...
нет, ну понятно, конечно, что никто по доброй воле, просто так, длукапы не пихает куда ни попадя...
например попробуйте разложить выражение этой функции на несколько частей... для эксперимента...
поп | |
|
| |
|
|
|
| да...
уже аксесс 2013...
да-а-а... | |
|
| |
|
|
|
| Решил проблему.
Оказывается, в аксесс 2013 некорректно работает функция DLookUp.
Пришлось в место функции промежуточно добавить запрос на обновление. Так что использовать аксесс 2013 не рекомендую, по крайнем мере до выхода сервис пака. | |
|
| |