Verknüfungen zu Access Datenbanken

Hallo liebe Accessler,

wie kann ich in einem Formular per VBA folgendes erreichen.
In einer anderen Access Datenbank (1) möchte ich eine Verknüpfung zur einer Tabelle, die aus einer nochmals aus einer anderen Access Datenbank (2) kommt herstellen.

Falls ich Datenbank (1) geöffnet hätte, wäre dies kein Problem mit

DoCmd.TransferDatabase acLink, „Microsoft Access“, pfad1 & namedb, acTable, nametabelle, nametabelle

TransferDatabase geht aber immer von der aktuellen Datenbank aus, ich möchte aber eine Verknüpfung erstellen von „fremden“ zu „fremden“ Datenbanken.

Jemand eine Idee, Danke im Voraus

Naja, sollte eigentlich nicht ein Problem sein, öffne zuerst die eine Datenbank, führe das Linkmakro in Ihr aus. Du kannst ja von irgend einem Windows programm aus per VBA die Datenbank aufrufen, nur musst du die Verweise richtig setzen, so benötigst Du sicher mal den ADO Verweis, sowie weitere Datenbankverweise. Ettliches darüber findest Du auch unter www.vbfun.de, API oder Outlook
Grüsse Sebastian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

eine Moeglichkeit waere folgende Vorgehensweise:
in einer Routine:

  1. Ein Workspace-Objekt erzeuegen
  2. Datenbank1 im Workspace oeffnen
  3. Mittels
    Datenbank1.DoCmd.TransferDatabase acLink, „Microsoft Access“,
    Datenbank2_pfad, acTable, nametabelle, nametabelle

Ansonsten gibt es noch den Weg ueber Datenbank1.CreateTabelDef(), Datenbank1.TabelDef.Add()

sollte funktionieren

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Lösung:

Der Ansatz von meinem Namensvetter Peter klappt nicht,
da db.docmd. ein wünschenswetter Befehl wäre, aber so nicht vorgesehen ist.

Der Ansatz von Stuppi brachte mich auf die richtige Spur, nach Sichtung der Hilfedateien bin ich auf folgende Lösung gekommmen:

Zwei Routinen, eingebunden in Module

Sub VerknuepfungenNeuSetzen(nameDBQuelle As String, nameDBZiel As String, nameTab As String)

Dim dbsTemp As Database
Dim td

Set dbsTemp = OpenDatabase(nameDBZiel)
'Löschen einer vorhandenen Tabelle
For Each td In dbsTemp.TableDefs
If td.Name = nameTab Then
dbsTemp.Execute "DROP TABLE " & nameTab & „;“
End If
Next td
'Neue Verknüpfnung zu der Tabelle erstellen

ConnectOutput dbsTemp, nameTab, nameDBQuelle, nameTab

dbsTemp.Close
End Sub

Sub ConnectOutput(dbsTemp As Database, _
strtable As String, strconnect As String, _
strSourceTable As String)

Dim tdfLinked As TableDef
Dim rstLinked As Recordset
Dim intTemp As Integer

’ Neues TableDef-Objekt erstellen, die Connect- und
’ SourceTableName-Eigenschaften - basierend auf den
’ übergebenen Argumenten - festlegen, und sie der
'TableDefs-Auflistung anfügen.
Set tdfLinked = dbsTemp.CreateTableDef(strtable)

tdfLinked.Connect = strconnect
tdfLinked.SourceTableName = strSourceTable
dbsTemp.TableDefs.Append tdfLinked

Set rstLinked = dbsTemp.OpenRecordset(strtable)

End Sub

Peter Desch