Laden...

Einlesen eine Excel Tabelle funktioniert nicht mehr nach Umstellung SQL String auf Parameterabfrage

Erstellt von FraBam vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.340 Views
F
FraBam Themenstarter:in
10 Beiträge seit 2020
vor 3 Jahren
Einlesen eine Excel Tabelle funktioniert nicht mehr nach Umstellung SQL String auf Parameterabfrage

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

4.931 Beiträge seit 2008
vor 3 Jahren

Tabellennamen können nicht als SQL-Parameter übergeben werden (sie sind ja kein DB-Datentyp), d.h. du mußt "... FROM [" + sheet + "$] " + ... so belassen.

F
FraBam Themenstarter:in
10 Beiträge seit 2020
vor 3 Jahren

Danke für die Antwort. Ich habe das schon fast vermutet/befürchtet. Gefallen tut es mir nicht, aber dann lebe ich halt damit.

F
10.010 Beiträge seit 2004
vor 3 Jahren

Klar kann ich dir einen Tipp geben, Vergiß das.

Der Tabellenname kann nicht als Parameter übergeben werden.