Hallo Leute,
ich habe zwei Datenbanken erstellt (in Access2003) mit VB6.
In DB2 gibt es eine gespeicherte Abfrage.
Die Db1 ist mit Db2 verknüpft.
Wenn ich nun die gespeicherte Abfrage der DB2 aufrufen möchte, bekomme ich eine komische Fehlermeldung: „Unzulässige SQL-Anweisung; „DELETE“, „INSERT“, “SELECT“ oder „UPDATE“ erwartet."
Muss ich dazu den Pfad und den Namen der Externen DB angeben?
Das sollte nicht sein, desshalb verknüpfe ich ja die Datenbanken!
Code der gespeicherten Abfrage in DB2: Public Sub Hs_Liste()
Dim cat As New ADOX.Catalog
Dim cmd As New ADODB.Command
cat.ActiveConnection = connstr
cmd.CommandText = "SELECT * FROM hs ORDER BY prdno,selno,objno"
cat.Views.Append "hsliste", cmd
Set cat = Nothing
End Sub Code des Aufrufes aus DB1:Public Function Liste(ByVal myConn As Connection) As ADODB.Recordset
Dim Rs As New ADODB.Recordset
Rs.Open "[hsliste]", myConn, adOpenStatic, adLockBatchOptimistic
Set Liste = Rs
End Function Wenn ich hingegen einen „normalen“ Aufruf starte (aus DB1), funktioniert es.Public Function Liste(ByVal myConn As Connection) As Recordset
Dim sSQL As String
Dim Rs As ADODB.Recordset
sSQL = "SELECT * FROM hs ORDER BY prdno,selno,objno"
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseClient
Rs.Open sSQL, myConn, adOpenStatic, adLockBatchOptimistic
Set Liste = Rs
Set Rs.ActiveConnection = Nothing
End Function Die Externe Tabelle wird in DB1 folgend definiert:Public Sub CreateAnhang(ByVal sDB_PATH As String)
Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table
' öffnen
cat.ActiveConnection = connstr
' Tabelle definieren
With tbl
.Name = "hs"
Set tbl.ParentCatalog = cat
.Properties("Jet OLEDB:Create Link") = True
.Properties("Jet OLEDB:Link Datasource") = sDB_PATH & "\DbVektor.mdb"
.Properties("Jet OLEDB:Remote Table Name") = "hs"
End With
'Anhängen der Tabeele an die Auflistung
cat.Tables.Append tbl
Set cat = Nothing
End Sub MyConn bzw. connstr ist immer der Connectionstring für die DB1!
Was mache ich falsch?
Bitte um Hilfe. |