MeisterB Geschrieben 2. August 2003 Geschrieben 2. August 2003 Wie kann ich einen Parameter an eine SQL-Abfrage unter C++ übergeben? Hab versucht vorher ne interger Varibale zu erstellen und dieser dann einen Wert zu geben. Aber beim versuch diese Variable in der Abfrage zu verwenden erhalten ich bei der Ausführung diese Meldung: "Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben." Jemand ne Idee wie ich diesen Parameter(sprich meine Variable) mit einem Wert an die Abfrage übergeben kann?
MeisterB Geschrieben 3. August 2003 Autor Geschrieben 3. August 2003 hab was probiert: long nummer=472; OleDbDataAdapter* daTitles = new OleDbDataAdapter("SELECT Kunden.* FROM AV INNER JOIN Kunden ON [AV].[KD-Nr]=[Kunden].[Kd-Nr] WHERE [AV].[seriennummer]='%nummer%'", DBVerbindung); Fehler: Datentypen in Kriterienausdruck unverträglich Seriennummer ist vom Typ long int also was soll daran falsch sein?
Darth_Zeus Geschrieben 3. August 2003 Geschrieben 3. August 2003 Ich würde die ' -zeichen weglassen, da imho sowas für char Werte da ist, also %nummer% statt '%nummer%'
HolzOnkel Geschrieben 4. August 2003 Geschrieben 4. August 2003 Kommt die Fehlermeldung vom Server oder aus deiner Applikation? Mir gefallen zum Beispiel generell die beiden "%" um nummer herum nicht... Andere Frage: welchen Server benutzt Du überhaupt? Kann ja auch davon abhängen... Gruss, der Onkel
MeisterB Geschrieben 4. August 2003 Autor Geschrieben 4. August 2003 Wenn ich die weg lasse erhalte ich: Syntaxfehler in Abfrageausdruck [AV].[seriennummer]=%nummer% Ich benutze keinen Server sondern greife direkt auf ne Accessdatenbank zu!
MeisterB Geschrieben 4. August 2003 Autor Geschrieben 4. August 2003 Hab rausgefunden das die Abfrage nicht den Fehler verursacht sondern die Zeile die ich mit XXXX gekennzeichnet habe: //Abfrage von Oben DataSet* dsTitles=new DataSet(); xxxx daTitles->Fill(dsTitles); dataGrid1->DataSource=dsTitles->Tables->Item[0]->DefaultView; ne Idee warum das den Fehler verursacht?
HolzOnkel Geschrieben 4. August 2003 Geschrieben 4. August 2003 Moin Meister, Ich benutze keinen Server sondern greife direkt auf ne Accessdatenbank zu! Das ist hier das Datenbankforum - da ist es wohl normal, dass ich nach dem Datenbankserver frage... <g> Was das andere angeht... ich nehme an, "daTitles" ist ein Array. Das musst Du unter C++, wenn ich das noch richtig weiss, ja auch erstmal deklarieren. Der Fehlermeldung nach hast Du das wohl nicht ganz richtig getan, da eine Spalte wohl den falschen Datentyp hat... eventuell auch einfach in der falschen Reihenfolge definiert, oder sowas. Gruss, der Onkel
MeisterB Geschrieben 5. August 2003 Autor Geschrieben 5. August 2003 daTitles ist vom Typ OleDbDataAdapter und wenn ich statt der Variablen die Zahl direkt reinschreibe funktioniert die Abfrage auch! Oder muss man unter VC++ .net Parameter anders in SQL-Abfragen einbinden? Wenn ja wie?
HolzOnkel Geschrieben 5. August 2003 Geschrieben 5. August 2003 ...äh.. mich beschleicht da was... es geht da ja um winzigweich... Beim MS-SQL-Server werden Variablen mit "?" übergeben. Ist es vielleicht auch hier der Fall? Kurz gesagt: OleDbDataAdapter* daTitles = new OleDbDataAdapter("SELECT Kunden.* FROM AV INNER JOIN Kunden ON [AV].[KD-Nr]=[Kunden].[Kd-Nr] WHERE [AV].[seriennummer]=?nummer", DBVerbindung); Du musst halt nur dafür sorgen, dass die entsprechende Variable auch existiert, aber das tut sie laut dem Codeschnipsel ja. Probier das mal... sonst bin ich mit meinem Latein vorerst auch am Ende. Gruss, der Onkel
MeisterB Geschrieben 9. August 2003 Autor Geschrieben 9. August 2003 Ich lasse einfach die Variable per Replace-Befehl mit dem gewünschten Wert ersetzten und schon hab ich meine dynamische SQL-Anweisung (endlich)!
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden