fensterbauer
Goto Top

Wie kann man zwischen 2 ODBC Quellen mit gleichem Namen in Access umschalten ?

Guten Morgen,

Frage : Wie kann man zwischen zwei ODBC Quellen mit gleichem Namen in Access umschalten ?

Es handelt sich um verknüpfte SQL 2008 DB`s welche angefragt werden sollen,
einmal auf Server1 und einmal auf Server2.

Es mus auch möglich sein, beide DB`s gleichzeitig abzufragen, also Server1 + Server2

Idealerweise mittels Button im Programm, wo ich den Server einfach wechseln kann :

1. Server1
2. Server2
3. Server1 + Server2


Hat jemand eine Idee ?

Content-Key: 171150

Url: https://administrator.de/contentid/171150

Printed on: April 20, 2024 at 05:04 o'clock

Mitglied: 83928
83928 Aug 09, 2011 at 06:40:53 (UTC)
Goto Top
Hi,
so ganz habe ich Deine Frage leider nicht verstanden. Du hast in Access 2 verknüpfte Tabellen auf 2 verschiedene SQL-Server-DBs. Was meinst Du mit "umschalten"? Das Umbenennen einer Tabellenverknüpfung?
 docmd.Rename "neuNAme",acTable ,"altName"  

Eine komplett neue verknüpfung kannst Du erstellen mit:
DoCmd.TransferDatabase

Und um die Tabelle auf beiden Severn abzufragen, kannst Du die Daten mittels INSERT und UNION in eine Temporäre Tabelle schreiben (oder Du nimmst gleich ein Recordset.

Gruß abaaba
Member: fensterbauer
fensterbauer Aug 09, 2011 at 09:46:58 (UTC)
Goto Top
Ja schon klar .. aber mir fehlt irgendwie vorher die Umschaltmöglichkeit ..

Es gibt 2 SQL 2008 Server mit jeweils den gleichen DB`s und den 9 Tabellen

1. Server1, Tabelle "Tab1" = Server2, Tabelle "Tab1"
2. Server1, Tabelle "Tab2" = Server2, Tabelle "Tab2"
etc.

Strukturen sind gleich, nur Inhalt der Tabellen ist unterschiedlich.

Zur Zeit habe ich die 9 Tabellen von Server 1 via ODBC verknüpft. Was mache ich jetzt wenn ich auf Server 2 gehn will ? Die Verknüpfungen weisen ja auf Server1 ..
Hier will ich ne Möglichkeit schaffen einfach zwischen beiden Servern zu wechseln und abzufragen bzw. beide gleichzeitig abzufragen.
Die Tabellennamen müssen unbedingt gleich bleiben, nur Servername und SQL Benutzer sind anders.

1. ODBC Abfrage Server1
2. ODBC Abfrage Server2
3. ODBC Abfrage Server1 + Server2


Weist Du wie ich es meine ?
Mitglied: 83928
83928 Aug 09, 2011 at 10:55:18 (UTC)
Goto Top
Es gibt bestimmt mehrere Ansätze um zu einem Ergebnis zu kommen. Die Verknüpfungen "umschalten" geht AFAIK nicht. Aber Löschen und Neu anlegen sollte kein Problem sein.


----
Ja schon klar .. aber mir fehlt irgendwie vorher die Umschaltmöglichkeit ..

Es gibt 2 SQL 2008 Server mit jeweils den gleichen DB`s und den 9 Tabellen

1. Server1, Tabelle "Tab1" = Server2, Tabelle "Tab1"
2. Server1, Tabelle "Tab2" = Server2, Tabelle "Tab2"
etc.

Strukturen sind gleich, nur Inhalt der Tabellen ist unterschiedlich.

Soweit, so gut....


Zur Zeit habe ich die 9 Tabellen von Server 1 via ODBC verknüpft. Was mache ich jetzt wenn ich auf Server 2 gehn will ? Die
Verknüpfungen weisen ja auf Server1 ..

Indem Du neue Verknüpfungen erstellst (automatisiert mittels VBA, "DoCmd.TransferDatabase acLink")

Hier will ich ne Möglichkeit schaffen einfach zwischen beiden Servern zu wechseln und abzufragen bzw. beide gleichzeitig
abzufragen.
Die Tabellennamen müssen unbedingt gleich bleiben, nur Servername und SQL Benutzer sind anders.
Wenn die Tabellennamen (=Name der Verknüpfung) gleich bleiben sollen musst Du natürlich die Verknüpfungen auf Server1 löschen bevor Du die Verknüpfungen auf Server2 erstellst (automatisiert). 2 Verknüpfungen mit einem Namen zur gleichen Zeit geht natürlich nicht.


1. ODBC Abfrage Server1
Alte Verknüpfung löschen, neue Verknüpfung erstellen, Tabelle abfragen
2. ODBC Abfrage Server2
Alte Verknüpfung löschen, neue Verknüpfung erstellen, Tabelle abfragen
3. ODBC Abfrage Server1 + Server2
Verknüpfungen auf beide Server anlegen und Daten in eine neue Tabelle übertragen


Weist Du wie ich es meine ?
Ich denke schon. Mit 20 Zeilen VBA sollte das Problem gelöst sein.


Member: fensterbauer
fensterbauer Aug 09, 2011 at 14:25:10 (UTC)
Goto Top
Genau so könnte man das machen .. Verknüpfungen autom. anlegen und löschen lassen ..

Nur .. mein VBA ist nicht so doll ..
Member: NetWolf
NetWolf Aug 09, 2011 at 19:50:24 (UTC)
Goto Top
Moin moin,

hmm, du hast also die Tabellen verknüpft....das ist gut, weil dann die gleichen Tabellennamen angelegt werden wie in der ODBC-Quelle.
Werden zusätzliche Tabellen mit gleichem Namen verknüpft, werden die Tabellennamen i.d.R. mit einer 1 erweitert.
Zusätzlich hast du die Möglichkeit den Tabellennamen der Verknüpfung zu ändern. Wichtig: diese Änderung findet nur in Access statt.

Deine Vorgabe, dass die Tabellennamen gleich sein müssen ist kontraproduktiv und nicht sinnvoll. Kannst du den Grund bitte näher erläutern?

Ich würde es so machen:

- Tabellen von Server 1 verknüpfen
- Tabellennamen mit einer 1 am Ende ergänzen

- Tabellen von Server 2 verknüpfen
- Tabellennamen mit einer 2 am Ende ergänzen

Beispiel:

Testtabelle1
Testtabelle2

So hast du Zugriff auf die Tabellen beider Server und musst für das "Umschalten" nur die Endnummer ändern = eine Zeile Code in VBA.

Grüße aus Rostock
Wolfgang
(Netwolf)
Member: fensterbauer
fensterbauer Aug 10, 2011 at 07:19:42 (UTC)
Goto Top
Tabellennamen müssen gleich sein, weil die Abfragen etc. sich darauf beziehen. Da es sehr viele sind, wären Änderungen sehr zeitaufwendig.
Member: NetWolf
NetWolf Aug 10, 2011 at 20:40:25 (UTC)
Goto Top
*grübel* und wie soll dann die Abfrage über beide Servertabellen gehen?

Abfragen ist es egal ob die Datenquelle eine Tabelle oder auch eine Abfrage ist.
D.h. du musst deinen bestehenden Abfragen nur die "richtige" Quelle liefern.

Lösung:

mit Currentdb.CreateQueryDef(...) kannst du einen SQL-String als Abfrage speichern die dann den richtigen Namen hat.

Ich nehme jetzt mal als Beispiel "TBL_Basis" als deine Quelle für deine Abfragen.

Wie gehabt verknüpfst du alle Tabellen beider Server. Du bekommst z.B.:
TBL_Basis_1 für Server 1
TBL_Basis_2 für Server 2

per CreateQueryDef erzeugst du eine Abfrage mit dem Namen TBL_Basis die einmal auf die Tabelle vom Server 1 und einmal auf die Tabelle des Server 2 verweist.

Deine bestehenden Abfragen nutzen ohne Änderung die neu erstellte Abfrage TBL_Basis als Basis.

Grüße aus Rostock
Wolfgang
(Netwolf)