Hallo,
ich wollte bei diesem SQL String den Zugriff auf das Tabellenblatt FROM [" + sheet + "$] " in die nachfolgende Parameterabfrage umstellen.
string sqlKunde = "SELECT Material, Materialkurztext, Produkthierarchie,Bedarfsmenge, VK_Position, VK_SD_Beleg, Bedarfsdatum, " +
"[Plan-WA-Datum], Kunde, Nettowert, Ursache, Bemerkung, [neuer Termin], Liefersperre, [Unser Zeichen] " +
"FROM [" + sheet + "$] " +
"WHERE VK_SD_Beleg IS NOT NULL AND VK_SD_Beleg <>' ' AND [Plan-WA-Datum]<? " +
"GROUP BY Material, Materialkurztext, Produkthierarchie,Bedarfsmenge, VK_Position, VK_SD_Beleg, Bedarfsdatum, " +
"[Plan-WA-Datum], Kunde, Nettowert, Ursache, Bemerkung, [neuer Termin], Liefersperre, [Unser Zeichen] ORDER BY Nettowert DESC";
string sqlKunde = "SELECT Material, Materialkurztext, Produkthierarchie,Bedarfsmenge, VK_Position, VK_SD_Beleg, Bedarfsdatum, " +
"[Plan-WA-Datum], Kunde, Nettowert, Ursache, Bemerkung, [neuer Termin], Liefersperre, [Unser Zeichen] " +
"FROM ? "+
"WHERE VK_SD_Beleg IS NOT NULL AND VK_SD_Beleg <>' ' AND [Plan-WA-Datum]<? " +
"GROUP BY Material, Materialkurztext, Produkthierarchie,Bedarfsmenge, VK_Position, VK_SD_Beleg, Bedarfsdatum, " +
"[Plan-WA-Datum], Kunde, Nettowert, Ursache, Bemerkung, [neuer Termin], Liefersperre, [Unser Zeichen] ORDER BY Nettowert DESC";
Den Zugriff auf das Excel realisiere ich wie folgt
public DataTable LoadDataTable(string sqlString, DateTime datum, string excelSheetName)
{
string connString = ExcelProvider + ExcelPath + ExcelFormat;
dt = new DataTable("Liste");
using (OleDbConnection xlsconn = new OleDbConnection(connString))
{
try
{
xlsconn.Open();
OleDbDataAdapter da = new OleDbDataAdapter(sqlString, xlsconn);
da.SelectCommand.Parameters.Add("?", OleDbType.Char).Value = excelSheetName;
da.SelectCommand.Parameters.Add("?", OleDbType.DBDate).Value = datum;
da.Fill(dt);
xlsconn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Ein Fehler ist beim Upload aufgetreten : " + ex.Message + " Das File konnte nicht geladen werden!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
return dt;
}
}
Vor der Umstellung auf die Parameterabfrage hat alles wunderbar funktioniert. Jetzt bekomme ich einen Syntaxfehler bei der FROM -Klausel beim Öffnen.
Ich habe schon alle möglichen Kombinationen versucht, die FROM Klausel umzustellen, komme aber nicht auf das richtige Ergebnis. Vielleicht hat jemand einen Typ für mich?
Hier eine kleine Auflistung, was ich schon versucht habe.
"FROM ?$ " +
"FROM ?" +"$ " +
"FROM [?$] " +
Danke und schöne Grüße
Christian
Tabellennamen können nicht als SQL-Parameter übergeben werden (sie sind ja kein DB-Datentyp), d.h. du mußt "... FROM [" + sheet + "$] " + ...
so belassen.
Danke für die Antwort. Ich habe das schon fast vermutet/befürchtet. Gefallen tut es mir nicht, aber dann lebe ich halt damit.
Klar kann ich dir einen Tipp geben, Vergiß das.
Der Tabellenname kann nicht als Parameter übergeben werden.