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 ?
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 ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171150
Url: https://administrator.de/contentid/171150
Ausgedruckt am: 15.11.2024 um 05:11 Uhr
7 Kommentare
Neuester Kommentar
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?
Eine komplett neue verknüpfung kannst Du erstellen mit:
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
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
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.
Soweit, so gut....
Indem Du neue Verknüpfungen erstellst (automatisiert mittels VBA, "DoCmd.TransferDatabase acLink")
1. ODBC Abfrage Server1
Alte Verknüpfung löschen, neue Verknüpfung erstellen, Tabelle abfragen
Weist Du wie ich es meine ?
Ich denke schon. Mit 20 Zeilen VBA sollte das Problem gelöst 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.
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 ..
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.abzufragen.
Die Tabellennamen müssen unbedingt gleich bleiben, nur Servername und SQL Benutzer sind anders.
1. ODBC Abfrage Server1
2. ODBC Abfrage Server2
Alte Verknüpfung löschen, neue Verknüpfung erstellen, Tabelle abfragen3. ODBC Abfrage Server1 + Server2
Verknüpfungen auf beide Server anlegen und Daten in eine neue Tabelle übertragenWeist Du wie ich es meine ?
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)
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)
*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)
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)