vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Join ü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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Join über mehrere Datenbanken1.005Tom_der_Neue21.10.04 09:20
Re: Join über mehrere Datenbanken662IngoP25.10.04 07:36

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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