hallo DaveS,
ich bekomme mit dem Excel langsam den Nervenzusammenbruch.
erst mal den code:
Dim Excel_Datei As String = ""
Dim Excel_Tabelle As String = ""
Dim BJ_von As String = ""
Dim BJ_bis As String = ""
Dim KBA As String
Dim Such As String = ""
Dim MPZ_Befehl As String = ""
Dim BefOk As Boolean = False
Dim CB_MPZ_Quelle As SqlDataReader
Dim CB_OLE_ConString As String
Dim CB_OLE_Dataset As System.Data.DataSet
Dim CB_OLE_CON As System.Data.OleDb.OleDbConnection
Dim CB_OLE_Adapter As System.Data.OleDb.OleDbDataAdapter
CB_OLE_ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
CB_QuellDatei.Text & ";Extended Properties=" & Chr( _
34) & _
"Excel 8.0;HDR=YES;IMEX=1;" & Chr(34) & ";"
CB_OLE_CON = New System.Data.OleDb.OleDbConnection(CB_OLE_ConString)
CB_OLE_Dataset = New System.Data.DataSet("TTT")
CB_OLE_Adapter = New System.Data.OleDb.OleDbDataAdapter("select * from" & _
"[" & _ CB_Excel_TabName.Text & "$]", CB_OLE_CON)
CB_OLE_Adapter.Fill(CB_OLE_Dataset)
'CB_OLE_Dataset.Tables.Add(CB_Excel_TabName.Text)
Dim ROW As DataRow
'Dim COL As DataColumn
CB_MPZSql_Com = CB_MPZConn.CreateCommand
If CB_MPZOpenOK = False Then
CB_MPZConn.Open()
CB_MPZConn.ChangeDatabase("MPZ_TTC")
CB_MPZConOK = True
CB_MPZOpenOK = True
End If
For Each ROW In CB_OLE_Dataset.Tables(CB_Excel_TabName.Text).Rows
BJ_von = ""
BJ_bis = ""
KBA = ""
Such = ""
If Not DBNull.Value.Equals(ROW("ID")) Then
If CInt(Mid(Trim(ROW("Baujahr")), 4, 2)) < 10 Then
BJ_von = Mid(Trim(ROW("Baujahr")), 1, 3) & "20" & Mid(Trim( _
ROW("Baujahr")), 4, 2)
Else
BJ_von = Mid(Trim(ROW("Baujahr")), 1, 3) & "19" & Mid(Trim( _
ROW("Baujahr")), 4, 2)
End If
If CInt(Mid(Trim(ROW("Baujahr")), Len(Trim(ROW("Baujahr"))) - _
1, 2)) < 10 Then
BJ_bis = Mid(Trim(ROW("Baujahr")), Len(Trim(ROW( _
"Baujahr"))) - 4, 3) & "20" & Mid(Trim(ROW("Baujahr")), Len( _
Trim(ROW("Baujahr"))) - 1, 2)
Else
BJ_bis = Mid(Trim(ROW("Baujahr")), Len(Trim(ROW( _
"Baujahr"))) - 4, 3) & "19" & Mid(Trim(ROW("Baujahr")), _
Len(Trim(ROW("Baujahr"))) - 1, 2)
End If
Such = Replace(Trim(Mid(ROW("Modell"), 5, Len(ROW("Modell")))), _
" ", "")
MPZ_Befehl = "select KBA FROM SHOP_Pkw_001 where replace(" & _
"Bezeichnung,' ','')='" & Such & _
"' and BJvon='" & BJ_von & "' and BJbis='" & _
BJ_bis & "'"
CB_MPZSql_Com.CommandText = MPZ_Befehl
CB_MPZ_Quelle = CB_MPZSql_Com.ExecuteReader
If CB_MPZ_Quelle.HasRows = True Then
While CB_MPZ_Quelle.Read
KBA = CB_MPZ_Quelle.GetValue(0)
End While
End If
If KBA <> "" Then
ROW.BeginEdit()
ROW("Typ-Schlüssel") = KBA
ROW.EndEdit()
End If
CB_MPZ_Quelle.Close()
End If
Next ROW
Dim updateSQL As String = "update [" & CB_Excel_TabName.Text & "$] set" & _
"Typ-Schlüssel=? where ID=?"
Dim updateCmd As New OleDb.OleDbCommand(updateSQL, CB_OLE_CON)
updateCmd.Parameters.Add("P1", OleDb.OleDbType.VarChar, 20, _
"Typ-Schlüssel")
updateCmd.Parameters.Add("P2", OleDb.OleDbType.Integer, 32, "ID")
CB_OLE_Adapter.UpdateCommand = updateCmd
CB_OLE_Adapter.Update(CB_OLE_Dataset) ', CB_Excel_TabName.Text
CB_OLE_CON.Close() nach CB_OLE_CON = New System.Data.OleDb.OleDbConnection(CB_OLE_ConString) im Debug
steht bei der Serverversion -> Ungültige Operation. Die Verbindung ist geschlossen.
und bei State Closed
Aber es gibt keinen Fehler. Die Zeile CB_OLE_Adapter.Fill(CB_OLE_Dataset) wird auch abgearbeitet denn es dauert eine Weile bis der nächste Befehl ausgeführt wird.
Es scheint alle zu funktionieren. Wenn ich aber die geänderten daten zurück schreiben will gibt es folgende Fehlermeldung:
{"Syntaxfehler in UPDATE-Anweisung."}
Ich habe keinen Schimmer wo da ein fehler sein soll |