Query erzeugen



  • Hallo

    probier es doch mal aus?
    Schau dir mal an was Parent darstellt und ob TQuery ein parent hat. Dann weist du das du fü nichtvisuelle Komponenten keinen Parent brauchst, nur einen Owner.

    bis bald
    akari



  • Hallo,
    ich habe noch die Zeile "Owner" eingefügt. Funktioniert bis hier alles. z.B. Anzahl der Datensätze wird korrekt zurück gemeldet.

    ProzessQueryCount = 0;
    ProzessQuery.Length++;
    ProzessQuery[ProzessQueryCount] = new TQuery(this);
    ProzessQuery[ProzessQueryCount]->Owner;
    ProzessQuery[ProzessQueryCount]->Close()
    ProzessQuery[ProzessQueryCount]->Close()
    ProzessQuery[ProzessQueryCount]->SQL->Clear();
    ProzessQuery[ProzessQueryCount]->SQL->Add("SELECT * FROM '" + asIn_1  + "' Where");
    ProzessQuery[ProzessQueryCount]->SQL->Add(asIn_2 + " = '" + asIn_3 + "'");
    ProzessQuery[ProzessQueryCount]->RequestLive = true;
    ProzessQuery[ProzessQueryCount]->DBSession->AddPassword(asPwUserDb_2);
    ProzessQuery[ProzessQueryCount]->Open();
    int QueryRegCount = ProzessQuery[ProzessQueryCount]->RecordCount;
    ProzessQueryCount += 1;
    

    Ich hoffe, das ich auch den Rest hinbekomme.

    bis bald Siegfried 👍 👍 👍



  • Hallo Beppo,

    diese Zeile ist unsinn:

    ProzessQuery[ProzessQueryCount]->Owner;
    

    Den Owner hast du ja schon im Konstruktor gesetzt.

    Außerdem, warum schließt du zweimal die Query mit Close(), bevor du sie öffnest?



  • Hallo,

    Richtig, bei einem Query, das vorher nicht existiert, benötigt man diese Zeilen nicht.

    Gruß Siegfried 👍 👍 👍



  • Hallo,
    wie man in diesem Beitrag erkennt, erstelle ich in einer Form meine Query's dynamisch. Funktioniert einwandfrei. Benötige jetzt noch dynamische Query's, welche von mehrere Formen Zugriff besitzen sollen. Es ist nicht gewährleistet, das die Form mit dynamische Query's geöffnet ist. Wie muß ich hier vorgehen ?

    bis bald
    Siegfried



  • Hallo

    Es ist nicht gewährleistet, das die Form mit dynamische Query's geöffnet ist.

    Es ist nicht wichtig, ob das Form geöffnet ist. Wichtig ist, das sowohl das Form als auch das dynamische TQuery instanziert sind, bevor du drauf zu greifst.

    bis bald
    akari


  • Mod

    Hallo

    mach dir ein DataModule
    in diesem schreibst du alles was mit Datenbanken zutun hat

    aus deiner eigentlichen Form schreibst du ca. sowas
    HoleDaten (SQL, TStringList);
    oder direktes Datenholen

    MfG
    Klaus



  • Hallo,
    Soll ich es so machen ? Eine Form mit Name DyaForm, die aber nie geöffnet wird. Dann von meiner XY Form

    DyaForm->ProzessQuery.Length++;
    DyaForm->ProzessQuery[ProzessQueryCount] = new TQuery(this);
    

    usw.
    DataModul ist mir klar, muß aber dynamische Query's benutzen, da das Program bestimmt, wieviele Query's benötigt werden.

    bis bald
    Siegfried



  • Hallo

    du brauchst keinen extra Zähler für die Anzahl an Abfragen, dazu gibt es doch die Length-Eigenschaft

    DyaForm->ProzessQuery.Length++;
    DyaForm->ProzessQuery[DyaForm->ProzessQuery.Length -1] = new TQuery(this);
    

    Du darfst natürlich nicht vergessen, alle Query-Instanzen wieder zu löschen.

    Statt DynamicArray kannst du dir auch std::vector anschauen, das ist etwas eleganter und bietet mehr Funktionen.

    Das Array kannst du aber auch in ein DataModul unterbringen, genau so wie du es in das Form integriert hast.

    bis bald
    akari



  • Hallo,
    werde alles durcharbeiten. Danke für die Hilfe.

    bis bald
    Siegfried


Anmelden zum Antworten