MeisterB Geschrieben 2. August 2003 Teilen 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MeisterB Geschrieben 3. August 2003 Autor Teilen 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth_Zeus Geschrieben 3. August 2003 Teilen Geschrieben 3. August 2003 Ich würde die ' -zeichen weglassen, da imho sowas für char Werte da ist, also %nummer% statt '%nummer%' Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HolzOnkel Geschrieben 4. August 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MeisterB Geschrieben 4. August 2003 Autor Teilen 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MeisterB Geschrieben 4. August 2003 Autor Teilen 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HolzOnkel Geschrieben 4. August 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MeisterB Geschrieben 5. August 2003 Autor Teilen 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HolzOnkel Geschrieben 5. August 2003 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MeisterB Geschrieben 9. August 2003 Autor Teilen 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)! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.