| |

VB & DatenbankenJoin über mehrere Datenbanken | |  | Autor: Tom_der_Neue | Datum: 21.10.04 09:20 |
| Hi,
habe ein sehr kniffliges Problem. Habe in meinem VB6 Programm eine Tabelle auf einer DB2-Datenbank (diese ist per OLE verknüpft) und eine Access-DB (auch per OLE verknüpft). Nun muß ich eine DB2 Tabelle per JOIN mit einer Access-Tabelle verknüpfen. Da beide Tabellen in unterschiedlichen DB's liegen kann ich nicht mit
"Set rs = New ADODB.Recordset"
"rs.open SELECT * FROM DB2, ACCESS WHERE ..."
arbeiten, da ich ja einen Datenbank-Connct mitgeben muß (DB2 oder ACCCESS). Die DB2 Tabelle erst in Access laden ist auch sinnlos, da diese knapp 2 Millionen Datensätze hat und damit nicht perfomant ist. Z.Z. lese ich die Access Tabelle und gehe für jeden Datensatz auf die DB2 Tabelle um den entspr. Datensatz dort zu suchen.
Dies Anwendung war vorher eine reine Access-Anwendung und soll nun in VB umgeschrieben werden.
Dies ist auch nicht so perfomant, da ich zwar nur 100.000 Datensätze in der Access-Tabelle habe, jedoch dadurch daß ich jedesmal ein Recorset für den entspr. Datensatz öffne, auslese und wieder schließe ist dies auch sehr langwierig. Die DB2- Tabelle in Access einbinden möchte ich nicht, da wir Access später ablösen möchten.
Gibt es irgendeine Möglichkeit die ganze Sache perfomanter zu realisieren ??? Am besten irgendeine Möglichkeit wo ich in einem SQL-Statement beide Datenbanken ansprechen kann ??? Eigentlich ist das doch ein übliches Problem in der EDV, oder ???? Man hat doch nicht immer nur eine Datenbank, gerade in größeren Firmen sind verschiedene DB’s im Einsatz die verknüpft werden müssen.
Hier der Ursprungscode-Code aus der original Access-Anwendung kommt:
strsql = "INSERT INTO access_Neue_Tbl (" &
"Feld1,Feld2,Feld3,Feld4)" & _
"SELECT access_Tbl_2.Feld1, Access_Tbl_2.Feld2, "
"DB2.Feld1, DB2.Feld2 FROM access_Tbl_2, DB2 " &
"WHERE access_Tbl_2.Feld3= DB2.Feld3 AND " & _
"access_Tbl_2.Feld4= DB2.Feld4; "
So habe ich es bisher in VB6 ausprogrammiert (war bis jetzt am performantesten)
strsql = "SELECT * FROM access_Neue_Tbl;"
Set rs_BD2 .Open SELECT * FROM access_Tbl_2, ACCESS, ,
adLockOptimistic, adCmdText
Set td.Open SELECT * FROM access_Neue_Tbl, ACCESS, ,
adLockOptimistic, adCmdText
While Not rs_BD2.EOF
td.AddNew
td.Fields("Feld1“) = rs_BD2.Fields("Feld1")
td.Fields("Feld2") = rs_BD2.Fields("Feld2")
GetDB2Felder (rs_BD2.Fields("Feld3"),, rs_BD2.Fields
("Feld4"), str_Var1, str_Var2)
td.Fields("Feld3") = str_Var1
td.Fields("Feld4") = str_Var2
td.Update
rs_BD2.MoveNext
Wend
' Zugriff auf die DB2 und die Felder auslesen
Public Function GetDB2Felder (m_Where1 As String,
m_Where2 As String, ByRef m_Var1 As String,
ByRef m_Var2 As String)
rs_Translate.Open "SELECT * FROM DB2.TABELLE WHERE " & _
"DB2.TABELLE.Feld3 = " & m_Where1 &
" AND DB2.TABELLE.Feld4", DB2
If Not rs_Translate.EOF Then
m_Var1 = rs_Translate.Fields("Feld1")
m_Var2 = rs_Translate.Fields("Feld2“)
End If
END FUNCTION
Über Hilfe wäre ich sehr dankbar
Merci im voraus
Gruß Tom |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevCoolbar 3.0 
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|