Hallo,
ich habe Probleme mit dem OleDbCommandBuilder. Und zwar habe ich eine Anwendung gechrieben, die Daten aus einer Excel-Tabelle zieht (über OLEDB), diese verarbeitet und dann in eine CVS-Dtaie bzw. Excel-Tabelle exportiert.
Beim Export in die Excel-Tabelle erhalte ich die Fehlermeldung: Syntax Fehler in der INSERT INTO Anweisung....
Hier der Code:
Private Sub saveFile(ByVal fileName As String, ByVal saveDataTable As _
DataTable, ByVal dateiFormat As DateiFormat)
'Speicherung der erzeugten übergebenen Daten-Tabelle
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim cpuDataRow As DataRow
Dim daten As String
Dim datenTyp As String
Dim datenLaenge As String
Dim zahlFormat As String
Dim nameSaveFile As String
Dim zeile As String
'Überprüfung, auf welchem Weg diese Prozdur aufgerufen wurde
'1. über die Automatisierung
'2. über einen Dialog
If fileName <> "nothing" Then
If fileName = "xls" Then
nameSaveFile = SaveFileDialog.FileName()
Else
nameSaveFile = fileName
End If
ElseIf SaveFileDialog.ShowDialog() = DialogResult.OK Then
nameSaveFile = SaveFileDialog.FileName
Else
nameSaveFile = ""
End If
If nameSaveFile <> "" And dateiFormat = dateiFormat.csv Then
....
ElseIf nameSaveFile <> "" And dateiFormat = dateiFormat.xls Then
Dim ExcelFile As IO.File
ExcelFile.Copy(Application.StartupPath & "\vorlage", _
nameSaveFile.ToLower.Replace(".csv", ".xls"), True)
Dim constringx As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data" & _
"Source=" + nameSaveFile.ToLower.Replace(".csv", ".xls") + _
";Extended Properties=Excel 8.0"
Dim sqly As String
Dim sqlx As String
Dim conx As New OleDb.OleDbConnection(constringx)
Dim cmdx As New OleDb.OleDbCommand(sqly, conx)
Dim headline As String
Try
conx.Open()
For i = 0 To saveDataTable.Columns.Count - 1
headline = headline & saveDataTable.Columns( _
i).Caption.Replace("#", "").Replace("-", "_").Replace("" & _
"", "_").Replace("%", "") & " Varchar(200), "
Next
sqly = "CREATE TABLE [Tabelle1$] (" & headline.Substring(0, _
headline.Length - 2) & ")"
cmdx.CommandText = sqly
cmdx.ExecuteNonQuery()
headline = ""
For i = 0 To saveDataTable.Columns.Count - 1
headline = headline & "[" & saveDataTable.Columns( _
i).Caption.Replace("#", "").Replace("-", "_").Replace("" & _
"", "_").Replace("%", "") & "], "
'headline = headline & "[" & saveDataTable.Columns(
' i).Caption & "]" '.Replace("#", "").Replace("-", _
"_").Replace(" ", "_").Replace("%", "") & ", "
Next
sqlx = "Select " & headline.Substring(0, headline.Length - 2) & _
" from [Tabelle1$A:AA]"
Dim DA As New OleDb.OleDbDataAdapter(sqlx, conx)
Dim myCmdB As OleDb.OleDbCommandBuilder = New _
OleDb.OleDbCommandBuilder(DA)
myCmdB.GetInsertCommand()
Dim icmd As String = myCmdB.GetInsertCommand().CommandText
DA.Update(saveDataTable)
cmdx.CommandText = sqlx
cmdx.ExecuteNonQuery()
Catch exc As Exception
MsgBox(exc.ToString)
'/Fehlermeldung
Finally
conx.Close()
End Try
Else
ToolBar.Buttons(2).Enabled = True
MenuItemExportSpeichern.Enabled = True
End If
End Sub Nachdem der Befehl DA.Update(saveDataTable) aufgerufen wird erhalte ich die oben genannte Fehlermeldung. Ich habe schon ein wenig gegoogelt und hier im Forum recherchiert. Leider habe ich keine Lösung gefunden. Ich hpffe, daß ihr mir helfen könnt.
Gruß
Brogi |