![]() |
OT: Re: TQuery zurueckgeben
So war das gemeint:
[Edit: ganz sauber]
Delphi-Quellcode:
Die query wird in der Hauptroutine als Variable deklariert, das Erstellen mit schnickschnack passiert woanders und die Query wird da freigegeben wo sie auch deklariert ist. Das gibt keine Probleme.
function myData: TQuery;
begin ...try result:=TQuery.create(NIL); except if assigned(result) then FreeAndNil(result); end end; procedure Hauptroutine; var qry : TQuery; begin qry:=myData; if qry <> NIL then with qry do begin try // Mach was finally Free; end; end; end; |
Re: Konzeptfrage Ergebnismenge einer Funktion
kann ich nem Query mehrere Selects vergeben, wobei das jeweils nachfolgende
Select die Ergebnismenge des Vorgängers nutzt? Quasi so: Select x1,x2 INTO temp_1 From Tabelle_1 Select x1,x2 From Temp_1 Where x1= Bed1 MFG Steffen |
Re: Konzeptfrage Ergebnismenge einer Funktion
Zitat:
SQL-Code:
Select x1, x2 from (Select x1, x2 from Tabelle_1 where x1 = Bed1) |
Re: Konzeptfrage Ergebnismenge einer Funktion
Vielen Dank, werde ich Montag gleich mal ausprobieren.....
Wie ich nun die Übergabemenge löse, ist mir nur irgendwie immernoch nicht ganz klar. Bisher bin ich, wie gesagt, ein wenig auf ner Datei (ini) hängengeblieben, finde dies aber ein wenig unsauber.... MFG Steffen |
Re: Konzeptfrage Ergebnismenge einer Funktion
aber sag mal, weshalb willste denn so viele datensätze zurückliefern?
das einzige wo das sinn machen könnte, wäre beim ausdruck... und da wäre es sinnvoll die daten vom server abzuholen und gleich zu drucken... grüsse und noch einen schönen samstag GG |
Re: OT: Re: TQuery zurueckgeben
Zitat:
So würde ich das machen:
Delphi-Quellcode:
Wieso schreibe ich die Instantiierung VOR das Try? Weil laut Guidelines ein Konstruktor keine logischen Prüfungen vornimmt und insofern (außer bei Speichermangel oder anderen fatalen Fehlern) nicht abschmiert. Und fatale Fehler muss man nicht abfangen, weil das eben :zwinker: fatal sein kann. Einen Speichermangel abzufangen, um eine Messagebox anzuzeigen, führt nämlich zu -jupp- einer Exception wegen Speichermangel...
Procedure Hauptroutine;
Var qMyQuery : TQuery; // riecht nach BDE, lieber nicht verwenden Begin qMyQuery := TQuery.Create (nil); Try // --- dieses Try kapselt die Instantiierung der TQuery-Komponente // qMyQuery mit der Datenbank verbinden qMyQuery.SQL.Text := 'Select * from View_VerdammtKomplexeAbfrage'; qMyQuery.Open; Try // --- dieses Try kapselt das Öffnen der Query qMyQuery.First; // Nicht nötig, aber illustriert, das man vom ANFANG anfangen will. While Not qMyQuery.Eof Do Begin DoSomething (qMyQuery); qMyQuery.Next; End; Finally qMyQuery.Close; End; Finally qMyQuery.Nil; // FreeAndNil ist überflüssig, da qMyQuery lokal ist und nicht weiter verwendet wird. End End; |
Re: Konzeptfrage Ergebnismenge einer Funktion
Prinzipiell soll die Funktion für verschiedene Einsatzzwecke flexibel nutzbar sein.
Zum eine für die Darstellung in Grids, zum anderen für Berechnungen. MFG Steffen |
Re: Konzeptfrage Ergebnismenge einer Funktion
Ich würde die Daten in eine Objektstruktur laden, dort mit ihnen arbeiten, um sie dann wieder abzuspeichern.
Da dies eine Standardanforderung ist, gibt es natürlich schon Lösung für das Laden und Speichern der Daten in ein Objekt. Du kannst Dir mal die InstantObjects von Sourceforge runterladen. Das ist eine sehr gelungene Umsetzung. Du definierst nur deine Objekte und das Laden/Speichern/Anzeigen in Grids/Bearbeiten in Feldern etc. bzw. die Vorbereitung und Bereitstellung geschieht vollautomatisch. So kannst du dich auf die Modellierung deiner Objekte kümmern. |
Re: OT: Re: TQuery zurueckgeben
Zitat:
Okay, das mir in dem Beispiel das create vor das try gerutscht ist, mag unschoen sein, aber es ist ja nur ein Beispiel. |
Re: Konzeptfrage Ergebnismenge einer Funktion
So..... habe es nun in einer csv abgelegt. So kann ich es an beliebiger Stelle neu laden.
Vielen Dank für eure Anregungen.... MFG Steffen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz