| |

ADO.NET / DatenbankenUpdate Problem | |  | Autor: DizkoStu | Datum: 15.03.07 23:21 |
| Hallo,
ich probiere Heute schon den ganzen Tag einen Transfer neuer Datensätze von einer AccessDB zur anderen hinzubekommen.
Die Datensätze die setadded sind werden problemlos in die 2. db gechrieben.
Das Problem taucht dann bei den setmodified Datensätzen auf. Sie werden vom Dataadapter erkannt und angezeigt aber die Änderungen werden dann in der 2. db nicht übernommen.
Es kommt auch keine Fehlermeldung. Die Daten sind absolut gleich geblieben.
Die beiden Datenbanken haben fast die gleiche Struktur.
db1 : ID als Autowert, Name als Text, Vorname als Text
db2 : ID als Integer, Name als Text, Vorname als Text
Ich bin jedenfalls absolut ratlos. Vielleicht habt Ihr ja eine Idee.
MFG
DizkoStu
Public Sub Vergleich()
Dim DB_A As DataSet = New DataSet()
Dim DB_B As DataSet = New DataSet()
Dim connectstring_A As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
"Source=table_A.mdb;"
Dim connectstring_B As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
"Source=table_B.mdb;"
Dim SelectCust_A As String = "SELECT ID,Name,Vorname FROM Customer_A"
Dim SelectCust_B As String = "SELECT ID,Name,Vorname FROM Customer_B"
Dim KundeAdapter_A As OleDbDataAdapter = New OleDbDataAdapter( _
SelectCust_A, GetAccess(connectstring_A))
Dim Kunde_ACB As OleDb.OleDbCommandBuilder = New _
OleDb.OleDbCommandBuilder(KundeAdapter_A)
KundeAdapter_A.Fill(DB_A, "Customer_A")
Dim KundeAdapter_B As OleDbDataAdapter = New OleDbDataAdapter( _
SelectCust_B, GetAccess(connectstring_B))
Dim Kunde_BCB As OleDb.OleDbCommandBuilder = New _
OleDb.OleDbCommandBuilder(KundeAdapter_B)
KundeAdapter_B.Fill(DB_B, "Customer_B")
Dim row As DataRow
Dim row2 As DataRow
Dim modify As DataRow()
KundeAdapter_B.UpdateCommand = Kunde_BCB.GetUpdateCommand
'KundeAdapter_B.UpdateCommand.Parameters.AddWithValue("@ID",
' SqlDbType.Int)
'KundeAdapter_B.UpdateCommand.Parameters.AddWithValue("@Name",
' SqlDbType.NText)
'KundeAdapter_B.UpdateCommand.Parameters.AddWithValue("@Vorname",
' SqlDbType.NText)
For Each row In DB_A.Tables("Customer_A").Select()
modify = DB_B.Tables("Customer_B").Select("ID = " & row("ID"))
If modify.Length > 0 Then
For Each row2 In modify
If Not compareRow(row, row2) Then
row.SetModified()
End If
Next
Else
row.SetAdded()
End If
Next
MsgBox(KundeAdapter_B.Update(DB_A, "Customer_A").ToString)
End Sub
Function GetAccess(ByVal cs As String) As System.Data.OleDb.OleDbConnection
Dim cnn As New System.Data.OleDb.OleDbConnection()
With cnn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = cs
End With
Return (cnn)
End Function
Public Function compareRow(ByVal rowA As DataRow, ByVal rowB As DataRow) As _
Boolean
' Vergleich der beiden Datarow Objekte
compareRow = True
Dim i As Integer
For i = 0 To rowA.ItemArray.Length - 1
If Not rowA(i).ToString = rowB(i).ToString Then Return False
Next
End Function [u] |  |
 | 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! sevDTA 3.0 Pro 
SEPA mit Kontonummernprüfung
Erstellen von SEPA-Dateien mit integriertem BIC-Verzeichnis und Konto- nummern-Prüfverfahren, so dass ungültige Bankdaten bereits im Vorfeld ermittelt werden können. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) 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
|
|