Hallo,
versuche DBNullValues aus meinen Tables zu entfernen und habe hierfür folgende Funktion geschrieben.
Ich weiss, dass meine Schleife über 1000 Änderungen an der Tabelle gemacht hat.
Beim DA.Update bekomme ich folgende Fehlermeldung:
"Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben."
Ich bin, hoffentlich nicht fälschlicherweise, davon ausgegangen, dass mein Commandbuilder das sauber macht.
Kann die Commands nicht von Hand schreiben, da es für alle Tabellen möglich sein soll und die Spalten nie gleich sind.
Bin über jede Hilfe dankbar.
Gruß noFaiTh
versuche DBNullValues aus meinen Tables zu entfernen und habe hierfür folgende Funktion geschrieben.
Ich weiss, dass meine Schleife über 1000 Änderungen an der Tabelle gemacht hat.
Beim DA.Update bekomme ich folgende Fehlermeldung:
"Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben."
Ich bin, hoffentlich nicht fälschlicherweise, davon ausgegangen, dass mein Commandbuilder das sauber macht.
Kann die Commands nicht von Hand schreiben, da es für alle Tabellen möglich sein soll und die Spalten nie gleich sind.
Bin über jede Hilfe dankbar.
Gruß noFaiTh
Code:
Public Function CleanTable(ByVal sDB As String, ByVal sTable As String) As Boolean
Dim myOleDbDataAdapter As OleDbDataAdapter
Dim myDataSet As DataSet = New DataSet()
Dim myDataTable As DataTable = New DataTable()
Dim myDataCol As DataColumn
Dim myDataRow As DataRow
Dim myDataType As String
Dim myOleDbConnection As OleDbConnection
Dim myCommand As OleDbCommandBuilder
Dim myCounter As Integer = 0
myOleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "User ID=Admin;Data Source=" & sDB)
Try
myOleDbDataAdapter = New OleDbDataAdapter("select * from " & sTable, myOleDbConnection)
myCommand = New OleDbCommandBuilder(myOleDbDataAdapter)
myOleDbDataAdapter.Fill(myDataTable)
For Each myDataCol In myDataTable.Columns
myDataType = myDataCol.DataType.ToString
For Each myDataRow In myDataTable.Rows
If myDataRow(myDataCol) Is System.DBNull.Value Then
Select Case myDataType
Case "System.String"
myDataRow(myDataCol) = ""
myCounter += 1
Case "System.Int32"
myDataRow(myDataCol) = 0
myCounter += 1
Case "System.Decimal"
myDataRow(myDataCol) = 0
myCounter += 1
Case Else
End Select
End If
Next
Next
If Not myDataTable.HasErrors Then
myOleDbDataAdapter.Update(myDataTable)
Else
MessageBox.Show("Error in DataTable" & " myCounter: " & myCounter.ToString)
End If
Catch ex As OleDb.OleDbException
MessageBox.Show(ex.Message & vbCrLf & ex.StackTrace)
Return False
Catch ex As Exception
MessageBox.Show(ex.Message & vbCrLf & ex.StackTrace)
Return False
End Try
Return True
End Function