Query erzeugen
-
Hallo
exakt. Solange die Eigenschaften (im allgemeinen einfach der String in SQL) stimmen, ists genauso wie eine IDE-Query.
bis bald
akari
-
Hallo,
bin dabei die Code für ein dynamisches Query zu erzeugen. Zeilen habe ich von einem Edid/Label abgeleitet. asIn_1 ist der Weg/Db, asIn_2 und asIn_3 sind Filter.
ProzessQueryCount = 0; ProzessQuery.Length++; ProzessQuery[ProzessQueryCount] = new TQuery(this); 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;zum Beenden habe ich folgender Code.
delete ProzessQuery[0];Frage: ist dieses so richtig, und bei Label Edit usw. verwende ich Parent. Brauche ich hier dies ?
Gruß Siegfried

-
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
-
Hallo
mach dir ein DataModule
in diesem schreibst du alles was mit Datenbanken zutun hataus deiner eigentlichen Form schreibst du ca. sowas
HoleDaten (SQL, TStringList);
oder direktes DatenholenMfG
Klaus
-
Hallo,
Soll ich es so machen ? Eine Form mit Name DyaForm, die aber nie geöffnet wird. Dann von meiner XY FormDyaForm->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