TQuery->ParamByName - Klump?



  • Hallo!

    Schaut euch doch mal folgendes Phänomen in meiner Paradox-Datenbank an:

    Query1->Close();
    Query1->SQL->Clear();

    Query1->SQL->Add(select count(:tab) from gutesache);
    //Query1->ParamByName("tab")->Value="ID";
    Query1->Open();

    ---
    Er macht beim Ausführen einen Fehler "Merkmal nicht verfügbar". Was für ein Merkmal?

    Ich hab dann einfach mal das :tab gelöscht und gleich ID" reingeschrieben. So:
    Query1->SQL->Add(select count(ID) from gutesache);

    ---
    dann hat's funktioniert!!
    Für was ist dann ParamByName gut?? Ich meine, für was soll ich das hernehmen?

    Jetzt mache ich es immer so - und es funktioniert perfekt - nur ist halt diese Lösung nicht optimal...

    Query1->Close();
    Query1->SQL->Clear();
    AnsiString tabelle = "ID"; // Kommt normalerweise als Funktionsparamter mit

    AnsiString str="select count(" + tabelle + ") from binaer";

    Query1->SQL->Add(str);
    //Query1->ParamByName("tab")->Value=tabelle;
    Query1->Open();

    ---------

    Wer weiß warum die Lösung mit ParamByName nicht funktioniert?

    Danke schonmal!



  • Mit ParamByName kannst du keine Felder angeben.
    Du kannst nur Werte für die einzelnen Felder angegeben.

    Also z.B. wenn dein Befehl so lautet:

    SELECT * FROM tabelle1 WHERE feld1 = "Test"

    Dann könntest du den String folgendermaßen mit ParamByName aufbauen:

    Query->Close();
    Query->SQL->Clear();
    Query->SQL->Add("SELECT * FROM tabelle1");
    Query->SQL->Add("WHERE feld1 = :Wert1");
    Query->ParamByName("Wert1")->Value = "Test"; // oder auch Inhalt eines Edits etc
    Query->Open();
    


  • Vielen Dank für die gute Erklärung!

    Jetzt ist mir das Prinzip von ParamByName klar!

    Danke JeGr!!!!!! 😉


Anmelden zum Antworten