Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Connect Eigenschaft will einfach nicht funzen??

117 views
Skip to first unread message

Markus Bauer

unread,
Jul 1, 2004, 3:49:30 PM7/1/04
to
Hallo!

Seit Tagen versuche ich verzweifeltst, meine Tabellenverknüpfungen (normale
MDB Dateien) per VBA zu aktualisieren.
Ich habe bereits alles versucht, auch bei einer neu angelegten MDB hauts
nicht hin. Es scheint, als wäre `Connect' schreibgeschützt, obwohl kein
Laufzeitfehler kommt:

for i = 0 to CurrentDb.TableDefs.Count - 1
if CurrentDb.TableDefs(i).connect <> "" then
MsgBox CurrentDb.TableDefs(i).connect
' getpwd liefert Verzeichnis der Datenbank
CurrentDb.TableDefs(i).connect = ";DATABASE=" _
& getpwd & "neuedb.mdb"
MsgBox CurrentDb.TableDefs(i).connect
' CurrentDb.TableDefs(i).Requery
endif
next i

Natürlich haben beide MessageBoxes exakt denselben Inhalt.
Ich checks einfach nicht ab. Basistabellen sollten das ja nicht sein (oder
hab ich da was falsch verstanden?). Ich hab in der ganzen Hilfe und
nirgends einen Hinweis gefunden, dass sich dieser Wert unter irgendwelchen
Umständen nicht ändern lassen würde.

Weiss wer Rat?

Markus

PS: Bis jetzt mach ichs mit der extrem uneleganten Methode zuerst die alte
TableDef rauszulöschen, dann eine neue zu erstellen und die der TableDefs
Auflistung hinzuzufügen.

Michael Zimmermann

unread,
Jul 1, 2004, 4:54:33 PM7/1/04
to
Hallo!

Markus Bauer:


> Hallo!
>
> Seit Tagen versuche ich verzweifeltst, meine
> Tabellenverknüpfungen (normale MDB Dateien) per VBA zu
> aktualisieren.
> Ich habe bereits alles versucht, auch bei einer neu
> angelegten MDB hauts nicht hin. Es scheint, als wäre
> `Connect' schreibgeschützt, obwohl kein Laufzeitfehler
> kommt:

> ...


> CurrentDb.TableDefs(i).connect = ";DATABASE=" _
> & getpwd & "neuedb.mdb"

Da fehlt

CurrentDb.TableDefs(i).RefreshLink

Zusätzlich wäre es performanter, die TableDef-Instanzen
einer Objekt-Variablen zuzuordnen.

Dim dbd As DAO.Database
Dim tdf As DAO.TableDef

Set dbd = CurrentDb
Set tdf = dbd.TableDefs("DeineTabelle")

For Each tdf in dbd.Tabledefs
If Len(tdf.Connect) > 0 _
Then
tdf.Connect = ";DATABASE=" & PfadUndNameNeueDB
tdf.RefreshLink
End If
next tdf

Gruß aus Mainz
Michael

Markus Bauer

unread,
Jul 1, 2004, 5:20:52 PM7/1/04
to
hi,

"Michael Zimmermann" <Zimme...@SZWeb.de> dixit:


> Hallo!
> Markus Bauer:
>> Hallo!
>> Seit Tagen versuche ich verzweifeltst, meine
>> Tabellenverknüpfungen (normale MDB Dateien) per VBA zu
>> aktualisieren.
>> Ich habe bereits alles versucht, auch bei einer neu
>> angelegten MDB hauts nicht hin. Es scheint, als wäre
>> `Connect' schreibgeschützt, obwohl kein Laufzeitfehler
>> kommt:
>> ...
>> CurrentDb.TableDefs(i).connect = ";DATABASE=" _
>> & getpwd & "neuedb.mdb"
>
> Da fehlt
>
> CurrentDb.TableDefs(i).RefreshLink

Nein.
Ich habe es eh (leider falsch) als Kommentar angedeutet. Statt Requery
meinte ich natürlich RefreshLink.
Aber RefreshLink bewirkt lediglich das Neuverbinden und nicht das
Übernehmen der Einstellungen.
Wenn ich der _Variable_ den Wert zuweise, MUSS sie diesen Wert auch später
haben, egal, ob ich RefreshLink ausführe oder nicht?!

> Zusätzlich wäre es performanter, die TableDef-Instanzen
> einer Objekt-Variablen zuzuordnen.

> (...)

Hab' ich eh so gemacht, der Code oben ist lediglich Symbolcode.

markus

Michael Zimmermann

unread,
Jul 2, 2004, 5:25:27 AM7/2/04
to
Hallo!

Markus Bauer:
> "Michael Zimmermann" <Zimme...@SZWeb.de> dixit:

> ... der Code oben ist lediglich Symbolcode.

Dann poste den Code, der den Fehler verursacht, und nicht
irgendeinen anderen. Wie soll man sonst den Fehler finden?

> > > ... Tabellenverknüpfungen...per VBA ...aktualisieren


> > > Ich habe bereits alles versucht, auch bei einer neu
> > > angelegten MDB hauts nicht hin. Es scheint, als wäre
> > > `Connect' schreibgeschützt, obwohl kein Laufzeitfehler
> > > kommt:
> > > ...
> > > CurrentDb.TableDefs(i).connect = ";DATABASE="
> > > _ & getpwd & "neuedb.mdb"
> > Da fehlt
> > CurrentDb.TableDefs(i).RefreshLink
> Nein.
> Ich habe es eh (leider falsch) als Kommentar angedeutet.
> Statt Requery meinte ich natürlich RefreshLink.
> Aber RefreshLink bewirkt lediglich das Neuverbinden und
> nicht das Übernehmen der Einstellungen.

Sind Deine Tabellen denn, wenn Du den Code ausführst,
schon verknüpft?

> Wenn ich der _Variable_ den Wert zuweise, MUSS sie diesen
> Wert auch später haben, egal, ob ich RefreshLink ausführe
> oder nicht?!

Was für eine Variable?

Der von mir gepostete Code ist getestet und funktioniert
seit Jahren in allen möglichen Umgebungen einwandfrei.

Connect ist definitiv nicht schreibgeschützt. Ich kann Dein
Problem nicht nachvollziehen.

Gruß aus Mainz
Michael

Uwe Mayer

unread,
Jul 6, 2004, 3:41:28 PM7/6/04
to
Hallo Markus,

Markus Bauer <m...@gmx.net> schrieb:


> Hallo!
>
> Seit Tagen versuche ich verzweifeltst, meine Tabellenverknüpfungen
> (normale MDB Dateien) per VBA zu aktualisieren.

[...]

> for i = 0 to CurrentDb.TableDefs.Count - 1
> if CurrentDb.TableDefs(i).connect <> "" then
> MsgBox CurrentDb.TableDefs(i).connect
> ' getpwd liefert Verzeichnis der Datenbank
> CurrentDb.TableDefs(i).connect = ";DATABASE=" _
> & getpwd & "neuedb.mdb"
> MsgBox CurrentDb.TableDefs(i).connect
> ' CurrentDb.TableDefs(i).Requery
> endif
> next i

um die Aktualisierung der Verknüpfung vollends durchzuführen, musst du
noch die RefreshLink-Methode des TableDef-Objekts ausführen, sonst wird
das nichts. An der Stelle deines auskommentierten Requery muss dort
stehen:

CurrentDb.TableDefs(i).RefreshLink

Gruss
Uwe

0 new messages