Zum Inhalt springen

Borland: Variable in String einfügen (war: [Hilfe] C++ Datenbankanbindung)


fReSh85

Empfohlene Beiträge

Also:

Ich schreibe im Moment ein Programm, mit dem Datensätze mit der C++ eigenen Datenbank Paradox7 eingegeben und nach solchen gesucht werden soll.

Die Eingabe ist mit den Bordmitteln von C++ kein Thema, habe ein DBGrid erstellt mit Datasource etc., das funktioniert auch ohne Probleme. Bei der Suchmaske will ich drei Eingaben eines Benutzers in ein SQL-Query übertragen (bzw. 3 SQL-Queries) um dann damit in der Datenbank nach dem Wert zu suchen. Da fangen die Probleme an, denn:

1. Sobald ich nach dem ersten anklicken des Buttons, mit dem ich die Suche starte, noch einmal klicke stürzt das Programm ab und meldet:

"Im Projekt xyz.exe ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: 'Ungültiges Schlüsselwort / Symbol-String: Select / Zeilennummer: 2'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen"

Woran kann das liegen? Ich hab ehrlich gesagt keine Ahnung, da die Syntax des SQL-Queries stimmen muss, beim ersten klicken zeigt er mir im DBGrid die komplette DB.

2. Wie bekomme ich die Benutzereingabe in das Query? Habs schon mit der direkten Deklaration (frmSuche->Edit1->Text) oder auch mit ner Variable versucht... obwohl sich das ja eigentlich nichts nehmen dürfte...

Hier nochmal der Code für den Button:

void __fastcall TfrmSuche::Button1Click(TObject *Sender)

{

if (frmSuche->Edit1->Text!=""){

Query1->Active = false;

Query1->SQL->Add("Select Interpret from MP3Archiv where Interpret = frmSuche->Edit1->Text");

Query1->Active = true;

}else

ShowMessage("Bitte geben Sie etwas in das Feld ein!");


}

Vielen Dank im Voraus, bin auch offen für andere Lösungsvorschläge :)

P.S.: Muss dazu sagen, dass ich kein guter C++er bin :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich schreibe im Moment ein Programm, mit dem Datensätze mit der C++ eigenen Datenbank Paradox7 eingegeben und nach solchen gesucht werden soll.
Paradox7 ist keine C++-eigene Datenbank. So etwas gibt es nicht.

2. Wie bekomme ich die Benutzereingabe in das Query? Habs schon mit der direkten Deklaration (frmSuche->Edit1->Text) oder auch mit ner Variable versucht... obwohl sich das ja eigentlich nichts nehmen dürfte...
So, wie du es jetzt machst, kann es jedenfalls nicht funktionieren. Du kannst nicht erwarten, dass der Compiler auf magische Weise erkennt, dass du da einen Variablennamen in einem Stringliteral hast, und den Namen durch den Inhalt ersetzt. Was wäre, wenn du eine Variable namens Select hättest? ;)

Dein Problem hat mit "Datenbankanbindung" nicht zu tun. Das Problem ist einfach nur, dass du nicht weißt, wie man Strings zusammensetzt. Da du offenbar den Borland Builder benutzt, verschiebe ich dich erst mal ins richtige Forum.

P.S.: Der Zusatz [Hilfe] im Threadtitel bringt auch nichts. Hilfe sucht hier so ziemlich jeder.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, habe jetzt nochmal entsprechend nachbearbeitet (Google ist dein Freund ;)) und habe jetzt die Übergabe des Texts aus dem Editfeld geschafft... Jetzt habe ich aber das Problem, dass die Fehlermeldung die beim Zweimaligen anklicken des Buttons kam, beim einmaligen Klicken auf den Button aufpoppt...

Hier der neue Code:

void __fastcall TfrmSuche::Button1Click(TObject *Sender)

{

String sCol = "";

String sAdd = "";

String sDB = "";

sCol = "Interpret";

sDB = "MP3Archiv";

sAdd="Select" + sCol + "from" + sDB + "where" + sCol = frmSuche->Edit1->Text;

if (frmSuche->Edit1->Text!=""){

Query1->Active = false;

Query1->SQL->Clear();

Query1->SQL->Add(sAdd);

Query1->Open();

Query1->Active = true;

}else

ShowMessage("Bitte geben Sie etwas in das Feld ein!");


}

Vielleicht kannst du mir dazu etwas mehr sagen... :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

So hat sich erledigt, auch ohne große Hilfe geschafft :) thx trotzdem

*close*

void __fastcall TfrmSuche::Button1Click(TObject *Sender)

{

String sCol = "Interpret";

String sDB = "MP3Archiv";

String sAdd;

sAdd= " Select " + sCol + " from " + sDB + " where " + sCol + "= '" + frmSuche->Edit1->Text + "'";

if (frmSuche->Edit1->Text!=""){

Query1->Active = false;

Query1->SQL->Clear();

Query1->SQL->Add(sAdd);

//Query1->Open();

Query1->Active = true;

}else

ShowMessage("Bitte geben Sie etwas in das Feld ein!");


}

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...