Benutzer mit den meisten Antworten
OleDB Command Zugriff auf externe MDB

Frage
-
Ich arbeite in meinem VB.NET-Projekt mit einer OleDbConnection undmöchte einen UPDATE-Befehl absetzen.Das besondere ist, daß in dem Update eine Tabelle der aktuellen MDB miteiner Tabelle einer externen MDB gejoitn werden soll.Ich habe folgendes versucht, bekomme aber immer Syntaxfehler:UPDATE table1 INNER JOIN t_table1 IN'C:\meine.mdb'[';DATABASE=C:\meine.mdb', False, False, ';PWD=pwd'] AS bON table1.ID=b.ID SET table1.Text1=b.Text1 WHERE table1.ID Is Not NullEine Ausnahme (erste Chance) des Typs "System.Data.OleDb.OleDbException"ist in System.Data.dll aufgetreten.UPDATE table1 INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0',';Database=C:\meine.mdb;pwd=pwd;', 'SELECT * FROM table1') AS b ONtable1.ID=b.ID SET table1.Text1=b.Text1 WHERE table1.MatGrp Is Not NullEine Ausnahme (erste Chance) des Typs "System.Data.OleDb.OleDbException"ist in System.Data.dll aufgetreten.Wie kann ich zwei Tabellen unterschiedlicher Access-Datenbanken in einemJOIN zusammenbekommen?Ich weiß daß SELECTs wie folgender gehen - das muss man doch nutzenkönnen!!!SELECT * FROM DB_BABR IN'C:\Temp\data03.mdb'[';DATABASE=C:\Temp\data03.mdb', False, False,';PWD=pwd'];Danke für eure HilfeLutz
Antworten
-
Hi Lutz aus Karl-Marx-Stadt : –),solche kaum dokumentierten Verrenkungen versuche ich zu vermeiden.Ich würde in solchem Fall die Tabelle “b” (c:\meine.mdb) zweispaltig (ID,Text1) in das Programm laden (in eine DataTable) und dann in einer Schleife die table1 aktualisieren. Wenn die Anzahl der Datensätze ungünstig ist, dann kann auch noch table1 laden (auch zweispaltig), mit DatRelations in einem DataSet verknüpfen, mit LinQ aktualisieren und dann ein Update absetzen.--
Peter Fleischer- Als Antwort markiert Robert BreitenhoferModerator Montag, 14. Januar 2013 12:36
-
Hi,lade beide Tabellen in Tabellen eines typisiertes DataSet, interiere durch die Menge, die ein Linq-Ausdruck liefert und führe ein Update aus, etwa so als Konsolenanwendung:
Imports System.Data.OleDb Module Module1 Sub Main() Dim dt1 As New DataSet1.Tab1DataTable Dim dt2 As New DataSet1.Tab1DataTable Using da1 As New OleDbDataAdapter("SELECT ID,Text1 FROM Table1", My.Settings.cn1) da1.Fill(dt1) Using da2 As New OleDbDataAdapter("SELECT ID,Text1 FROM Table2", My.Settings.cn2) da2.Fill(dt2) End Using For Each r In From itm1 In dt1.AsEnumerable Join itm2 In dt2.AsEnumerable On itm1.ID Equals itm2.ID r.itm1.Text1 = r.itm2.Text1 Next Dim cb As New OleDbCommandBuilder(da1) da1.Update(dt1) End Using Console.ReadKey() End Sub End Module
--
Viele Gruesse
Peter- Als Antwort markiert Robert BreitenhoferModerator Montag, 14. Januar 2013 12:36
Alle Antworten
-
Hi Lutz aus Karl-Marx-Stadt : –),solche kaum dokumentierten Verrenkungen versuche ich zu vermeiden.Ich würde in solchem Fall die Tabelle “b” (c:\meine.mdb) zweispaltig (ID,Text1) in das Programm laden (in eine DataTable) und dann in einer Schleife die table1 aktualisieren. Wenn die Anzahl der Datensätze ungünstig ist, dann kann auch noch table1 laden (auch zweispaltig), mit DatRelations in einem DataSet verknüpfen, mit LinQ aktualisieren und dann ein Update absetzen.--
Peter Fleischer- Als Antwort markiert Robert BreitenhoferModerator Montag, 14. Januar 2013 12:36
-
Am 09.01.2013 21:29, schrieb Peter Fleischer [MVP]:> Hi Lutz aus Karl-Marx-Stadt : –),> solche kaum dokumentierten Verrenkungen versuche ich zu vermeiden.> Ich würde in solchem Fall die Tabelle “b” (c:\meine.mdb) zweispaltig> (ID,Text1) in das Programm laden (in eine DataTable) und dann in einer> Schleife die table1 aktualisieren. Wenn die Anzahl der Datensätze> ungünstig ist, dann kann auch noch table1 laden (auch zweispaltig), mit> DatRelations in einem DataSet verknüpfen, mit LinQ aktualisieren und> dann ein Update absetzen.Hast du dafür mal ein Beispiel? Hab noch nicht viel mit DataTables,DataSets und DataRelations gearbeitet .... und hab grad ein kleinesZeitproblem ;)
-
Hi,lade beide Tabellen in Tabellen eines typisiertes DataSet, interiere durch die Menge, die ein Linq-Ausdruck liefert und führe ein Update aus, etwa so als Konsolenanwendung:
Imports System.Data.OleDb Module Module1 Sub Main() Dim dt1 As New DataSet1.Tab1DataTable Dim dt2 As New DataSet1.Tab1DataTable Using da1 As New OleDbDataAdapter("SELECT ID,Text1 FROM Table1", My.Settings.cn1) da1.Fill(dt1) Using da2 As New OleDbDataAdapter("SELECT ID,Text1 FROM Table2", My.Settings.cn2) da2.Fill(dt2) End Using For Each r In From itm1 In dt1.AsEnumerable Join itm2 In dt2.AsEnumerable On itm1.ID Equals itm2.ID r.itm1.Text1 = r.itm2.Text1 Next Dim cb As New OleDbCommandBuilder(da1) da1.Update(dt1) End Using Console.ReadKey() End Sub End Module
--
Viele Gruesse
Peter- Als Antwort markiert Robert BreitenhoferModerator Montag, 14. Januar 2013 12:36
-
Hallo LutzChemnitz,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.