OLEDB Insert Befehl für Excel wird als Falsch deklariert

bierber

Grünschnabel
Hallo miteinander,
habe ein Problem beim befüllen einer Excel Tabelle.

Also Verbidung aufbauen über das OLEDB funktioniert.
Doch wenn ich meinen Insert String zusammengebaut habe wird mir immer gesagt, das mein Insert Befehl ein Fehler hat.
Hier mal ein Befehl:
"INSERT INTO [Dichtpruefung$] (Bezeichnung,Quelle,DMC-Code,Pruefnummer,Pruefdruck,Leckrate,Status) VALUES (?,?,?,?,?,?,?)"
Als erstes stellt sich mir hier die Frage, warum die Fragezeichen nicht mit den korrekten werten ersetzt werden.
Hier mal der code mit dem ich das machen will
Code:
PrivateFunction BuidExcelConnectionString(ByVal fileName AsString) AsString
' Verbindungszeichenfolge erzeugen un zurückgeben
Return"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + fileName + "';Extended Properties=Excel 11.0;"
EndFunction
''' <summary>
''' Erzeugt aus einer Tabelle ein Excel-Dokument.
''' </summary>
''' <param name="table">Tabelle</param>
''' <param name="fileName">Dateiname des Ziel-Excel-Dokuments</param>
PublicSub FillExcelSheet(ByVal table As DataTable, ByVal fileName AsString)
If LCase(Strings.Right(fileName, 4)) <> ".xls"Then
fileName = fileName & ".xls"
EndIf
' Neue leere Excel-Datei aus dem Tabellenschema erzeugen
WriteTableSchemaToExcelFile(table, fileName)
' Verbindungszeichenfolge erzeugen
Dim connectionString AsString = BuidExcelConnectionString(fileName)
' Neue OLEDB-Verbindung erzeugen
Dim connection AsNew OleDbConnection(connectionString)
connection.Open()
' String-Generator für Parameter erzeugen
Dim parameterBuilder AsNew StringBuilder(") VALUES (")
' Spalten zählen
Dim columnCount AsInteger = table.Columns.Count
' INSERT SQL-Anweisung für Excel erzeugen
Dim builder AsNew StringBuilder("INSERT INTO [")
builder.Append(table.TableName)
builder.Append("$] (")
For i AsInteger = 0 To columnCount - 1
' Alle Spalten durchlaufen
' Spaltennamen anfügen
builder.Append(table.Columns(i).ColumnName)
' Parameter anfügen
parameterBuilder.Append("?")
' Wenn eine weitere Spalte folgt ...
If i < (columnCount - 1) Then
' Kommas anfügen
builder.Append(",")
parameterBuilder.Append(",")
EndIf
Next
' SQL-Anweisung fertigstellen
builder.Append(parameterBuilder.ToString())
builder.Append(")")
Dim insertStatement AsString = builder.ToString()
' Preisliste durchlaufen
ForEach row As DataRow In table.Rows
' Neuen OLEDB-Befehl erzeugen
Dim command AsNew OleDbCommand(insertStatement, connection)
' Alle Spalten durchlaufen
ForEach column As DataColumn In table.Columns
' Parameter übergeben 
command.Parameters.Add(New OleDbParameter(column.ColumnName, row(column)))
Next
' Befehl ausführen
command.ExecuteNonQuery()
Next
' Verbindung schließen
connection.Close()
EndSub

Sieht hier jemand schon einen Fehler, oder kann mir jemand etwas code schreiben, wie ich ein Datagrid in eine Excel Tabelle bekomme. Vielleicht geht das ja auch einfacher?

Vielen Dank schon mal felix
 

Neue Beiträge

Zurück