TQuery in Funktion



  • Habe schon gesucht, bin aber nicht schlauer geworden ...
    Ich möchte SQL Befehle in einer eigenen Funktion haben.
    Nach eine if Abfrage übergebe ich im bestimmten Fall
    Strings an eine Funktion check()
    In dieser Funktion check() sollen dann mit diesen Strings
    SQL Abfragen ablaufen. Habe ich soweit so:

    String geschlecht_check(String xnr, String check);
    String geschlecht_check(String geschlecht, String zmr, String nummer)
    {
        TStringList* list4 = new TStringList;
        Query4->SQL->Clear();
        Query4->SQL->Add("SELECT Nr FROM Table WHERE xNr= :xnr AND    db_check= :check ");
        Query4->ParamByName("xnr")->Value =xnr;
        Query4->ParamByName("check")->Value =check;
        Query4->Open();
    
         list4->Add(Query4->Fields->Fields[0]->AsString);
         Edit4->Text=Query4->Fields->Fields[0]->AsString;
    }
    

    Builder sagt aber 'Undefiniertes Symbol Query4' ??? Auch ein Versuch, über
    TQuery* Query4 = new TQuery(this); scheitert. Wie kann ich solch eine Funktion erstellen, ohne dass Builder meckert ?

    Danke

    Daniela

    Edit:
    Bitte die Code-Tags benutzen. Danke!

    [ Dieser Beitrag wurde am 13.01.2003 um 17:22 Uhr von Jansen editiert. ]



  • Wo hast du denn Query4 definiert?

    Versuch's doch mal so:
    Zieh dir einfach mal zur Entwurfszeit (in der IDE) eine TQuery-Komponente auf dein Formular.
    Dann zeige den Objektinspektor an und schaue dir die Eigenschaft Name an.
    Diesen Namen kannst du jetzt ändern oder auch beibehalten.
    Anstelle von Query4 schreibst du jetzt den Namen der gerade auf das Formular gezogenen TQuery-Komponente.



  • Original erstellt von <Daniela>:
    Auch ein Versuch, über TQuery Query4 = new TQuery(this); scheitert.*

    #include <DBTables.hpp>
    ...
    TQuery *Query4 = new TQuery(this);
    ...
    


  • Erstmal Danke.

    Das mit dem TQuery in die IDE ziehen, das mache ich ja normalerweise so ...
    Das includen hilft auch nicht. Builder meckert dass 'this nur für Elementfunktionen verwendet werden kann' und ohne das this 'gibts keine Übereinstimmung für TQuery()' ?? Ausserdem kenn er weitere Komponenten wie Edits nicht mehr in der Funktion, komisch, versteh ich nicht



  • wo steht denn die Funktion?
    Wo ist sie definiert und wo deklariert?



  • jetzt hab ichs
    in der unit.cpp
    void __fastcall TForm1::funktion(String a, String b)

    und im header als private
    void __fastcall TForm1::funktion(String a, String b)

    somit müsste es klappen

    Danke



  • wenn die funktion nicht member der klasse ist, kannst du this nicht benutzen, dafür aber Application.



  • Hi Daniela,

    zwei Tips habe ich noch:

    1. bei den Funktionsdeklarationen ist es nicht zwingend erforderlich
    den klassennamen und bereichsoperstor mitzuübergeben, also es geht,
    auch anstatt wie in Deiner Header:
    void __fastcall TForm1::funktion(String a, String b);
    auch mit:
    void funktion(String a, String b);
    2.Üblicherweise werden Methoden als Public deklariert.

    Es sind nur Tips , und keine Kritik...

    epidemic


Anmelden zum Antworten