![]() |
Datenbank: Firebird • Version: 2.0.3 • Zugriff über: Zeos
Select-Abfrage mit TQuery
Hallo,
ich kann ja über den folgenden Code, eine Select-Abfrage ausführen und das Ergebnis in normale TEdit-Felder einfügen :
Delphi-Quellcode:
Mit diesem Codeschnipsel kann ich ja die Listbox1 mit dem Ergebnis füllen. Da ich gerade an einer DLL schreibe, möchte ich die While-Schleife in meinen Eigentlichen Sourcecode packen und den Rest in die DLL. Was muss ich in der Funktion als Rückgabewert mitgeben, dass ich alle Datensätze übergeben bekomme und auch abfragen kann ?
Query.SQL.Text := "Select ort from orte where plz='<Wert>'";
Query.SQL.Open; Query.Active := true; while not EOF do begin Listbox1.Items.Add(Fields[0].AsString); end; Query.Active := false; Die Funktion zum Abrufen Sie wie folgt aus :
Delphi-Quellcode:
Wenn ich nur ein Ergebnis herausbekomme, funktioniert es wunderbar. Wenn ich aber mehrere Ergbenisse habe, dann komme ich zwar an den ersten Wert dran aber nicht an die restelichen. Wie komme ich an die restlichen Werte, wenn das Ergebnis > 1 ist ?
function Query(SQLCommand : string):TFields;
begin Query.SQL.Text := "Select ort from orte where plz='<Wert>'"; Query.SQL.Open; Query.Active := true; result := Query.Fields; end; |
Re: Select-Abfrage mit TQuery
Ich würde das nicht in eine DLL auslagern aber wenn müsstest du Funktionen/Prozeduren für First, Next, Prior, Last usw. implementieren
|
Re: Select-Abfrage mit TQuery
Dazu müsstest du "gemeinsame Laufzeitpackages" verwenden oder eine richtige BPL. Anonsten wird das sehr aufwendig den "lebende" Delphi-Objekt ohne gemeinsame Laufzeitpackages werden früher oder später Probleme verursachen.
|
Re: Select-Abfrage mit TQuery
Kann ich da nichts über TDataSource oder TDataSet machen ? Ich könnte doch TDataSource als Rückgabewert nehmen und dann an ein TDBEdit oder TDBListBox übergeben oder nicht ?
|
Re: Select-Abfrage mit TQuery
Aber was ist dann der Zweck der Auslagerung?
|
Re: Select-Abfrage mit TQuery
Zitat:
|
Re: Select-Abfrage mit TQuery
Zitat:
Zitat:
|
Re: Select-Abfrage mit TQuery
Hallo RWarnecke,
Wenn Du die DB-Zugriffe auslagern willst, dann nimm doch TDataModule. Das ist zwar nur ein Source-Modul aber ich habe bisher ganz gute Erfahrungen damit gemacht. Ich habe alles was mit DB-Zugriffen zu tun hat in ein DataModule gepackt und diese Daten dann meist per Stringlist weiter gereicht. also etwa so:
Delphi-Quellcode:
Gruß
function GET_PERS_DATA(indat:integer):Tstringlist;
K-H |
Re: Select-Abfrage mit TQuery
Zitat:
Zitat:
|
Re: Select-Abfrage mit TQuery
Ich habe im Grunde genommen folgendes gemacht. Ich habe eine DLL erstellt und dazu noch ein DataModul mit in die DLL gegeben. Die Funktion aus dem ersten Beitrag habe ich in die DLL geschrieben und exportiert. Wenn die DLL erstellt wird, hat sie eine Größe von 1,4MB. Ich lade dann dynamisch die DLL und stelle die Verbindung zu Datenbank her und schliesse auch die Verbindung und entlade die DLL wieder.
Das mal als Hintergrund zu meiner Frage. Klar kann ich über eine StringList gehen, nur möchte ich das als letzten Ausweg nehmen. Ich müsste dann ja immer das ganze dementsprechend konvertieren oder bearbeiten lassen im Hauptprogramm. Daher suche ich noch nach einer anderen Lösung. Es muss doch irgendeine Klasse geben, die ich in der Funktion als Rückgabewert mit übergebe, die alle relevanten Daten (Anzahl Datensätze u.s.w.) und den Inhalt der Datensätze enthält ? Zitat:
Wie funktioniert das denn mit dem DataSource bei den TDBEdit-Feldern oder den anderen DB-Komponenten (TDBListbox, TDBLabel u.s.w.) ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:21 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 by Thomas Breitkreuz