Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Parameter in SQL-Abfrage

Empfohlene Antworten

Veröffentlicht

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?

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?

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

Wenn ich die weg lasse erhalte ich:

Syntaxfehler in Abfrageausdruck [AV].[seriennummer]=%nummer%

Ich benutze keinen Server sondern greife direkt auf ne Accessdatenbank zu!

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?

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

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?

...ä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

Ich lasse einfach die Variable per Replace-Befehl mit dem gewünschten Wert ersetzten und schon hab ich meine dynamische SQL-Anweisung (endlich)!

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.