myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Office-Technologien » Einlesen eine Excel Tabelle funktioniert nicht mehr nach Umstellung SQL String auf Parameterabfrage
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

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

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
FraBam
myCSharp.de-Mitglied

Dabei seit: 30.04.2020
Beiträge: 10


FraBam ist offline

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

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich wollte bei diesem SQL String den Zugriff auf das Tabellenblatt FROM [" + sheet + "$] " in die nachfolgende Parameterabfrage umstellen.

C#-Code:
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";

C#-Code:
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

C#-Code:
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.

C#-Code:
"FROM ?$ " +
"FROM ?" +"$ " +
"FROM [?$] " +

Danke und schöne Grüße
Christian
07.05.2020 16:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.848
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Tabellennamen können nicht als SQL-Parameter übergeben werden (sie sind ja kein DB-Datentyp), d.h. du mußt "... FROM [" + sheet + "$] " + ... so belassen.
07.05.2020 16:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
FraBam
myCSharp.de-Mitglied

Dabei seit: 30.04.2020
Beiträge: 10

Themenstarter Thema begonnen von FraBam

FraBam ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für die Antwort. Ich habe das schon fast vermutet/befürchtet. Gefallen tut es mir nicht, aber dann lebe ich halt damit.
07.05.2020 16:55 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
FZelle
myCSharp.de-Poweruser/ Experte

Dabei seit: 23.04.2004
Beiträge: 9.891


FZelle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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

Der Tabellenname kann nicht als Parameter übergeben werden.
07.05.2020 16:57 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 8 Monate.
Der letzte Beitrag ist älter als 8 Monate.
Antwort erstellen


© Copyright 2003-2021 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 15.01.2021 15:37