TDBF : suche
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
TDBF : suche
Ich habe mich nun durch viele Tutorials zum Thema TDBF gewühlt, aber eine Frage blieb offen:
Wie mache ich eine Suche, wenn es nicht der Index ist ?
Beispiel:
eine DB mit den 5 Feldern: name, vorname, land, ort, plz
Der index liegt auf dem Feld name.
Ich möchte nun alle Datensätze finden mit plz=78464
Wie muss diese Suchabfrage aussehen ?
Besondere Anforderung: das Ergebnis soll nach dem Feld name sortiert sein.
Wie mache ich eine Suche, wenn es nicht der Index ist ?
Beispiel:
eine DB mit den 5 Feldern: name, vorname, land, ort, plz
Der index liegt auf dem Feld name.
Ich möchte nun alle Datensätze finden mit plz=78464
Wie muss diese Suchabfrage aussehen ?
Besondere Anforderung: das Ergebnis soll nach dem Feld name sortiert sein.
Re: TDBF : suche
Siehe http://wiki.freepascal.org/Lazarus_Tdbf ... ng_filters. Generell würde ich aber SQLite für einfache Datenbankanwendungen vorziehen (SQL-Unterstützung ist mMn sehr vorteilhaft und SQLite ist sehr gut dokumentiert).
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TDBF : suche
Sicher ist SQLite die bessere Alternative...
Normalerweise arbeite ich sehr viel mit mysql-Datenbanken.
In diesem Fall ist mein Problem : man kann einem Anwender nicht zumuten Sqlite zu installieren. Das geht in dies Hose...
Und dann wäre wieder viel Fernwartung angesagt. Und das wollte ich vermeiden.
Aber wahrscheinlich werde ich eine eigene kleine Datenbank einsetzen.
Normalerweise arbeite ich sehr viel mit mysql-Datenbanken.
In diesem Fall ist mein Problem : man kann einem Anwender nicht zumuten Sqlite zu installieren. Das geht in dies Hose...
Und dann wäre wieder viel Fernwartung angesagt. Und das wollte ich vermeiden.
Aber wahrscheinlich werde ich eine eigene kleine Datenbank einsetzen.
- corpsman
- Lazarusforum e. V.
- Beiträge: 1624
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: TDBF : suche
sqllite must du unter windows nicht installieren, das legst du einfach als DLL ins App verzeichnis.
Unter Linux ist es auch kein Problem "sudo apt-get install sqlite3"
Unter Linux ist es auch kein Problem "sudo apt-get install sqlite3"
--
Just try it
Just try it
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TDBF : suche
ja, das wäre schön.
Allerdings bin ich schon gleich über das erste Problem gestolpert:
bei mir im Objektinspektor werden keine TSQlite3-Componenten angezeigt wie z.B.
TSQLite3Connection,
TSQLTransaction,
TSQLQuery
Diese gibt es anscheinend nicht, obwohl ich die neueste Version von Lazarus habe....
Habt ihr eine Idee, was mir da fehlt ?
Allerdings bin ich schon gleich über das erste Problem gestolpert:
bei mir im Objektinspektor werden keine TSQlite3-Componenten angezeigt wie z.B.
TSQLite3Connection,
TSQLTransaction,
TSQLQuery
Diese gibt es anscheinend nicht, obwohl ich die neueste Version von Lazarus habe....
Habt ihr eine Idee, was mir da fehlt ?
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TDBF : suche
gefunden: unter Linux muss man eine spezielle Leiste öffnen.
Re: TDBF : suche
Naja, manchmal will man keine zusätzliche DLL haben, und da ist eine kleine dbf-Datei durchaus nicht verkehrt. In dem beigefügten Demoprojekt zeige ich, wie man hier Daten suchen und filtern kann. Beachte, das durchsuchte Feld PLZ ist nicht indiziert, so wie ursprünglich angefragt.
- Dateianhänge
-
dbf_filter.zip
- (2.62 KiB) 92-mal heruntergeladen
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TDBF : suche
ja, es ist immer wieder beachtlich, welche Funktionen sich finden, wenn man in die Tiefe steigt.
Ich finde diese Filter-Funktion sehr interessant.
Gibt es auch noch eine Möglichkeit festzustellen, wieviele Elemente durch den Filter gefunden wurden ?
Ich finde diese Filter-Funktion sehr interessant.
Gibt es auch noch eine Möglichkeit festzustellen, wieviele Elemente durch den Filter gefunden wurden ?
Re: TDBF : suche
Bei einigen Datenbanktypen kann man mit der Dataset-Eigenschaft RecordCount to Anzahl der gefilterten Datensätze abfragen; bei dbf erhalte ich aber nur die Anzahl der ungefilterten. Da TDbf auch kein SQL kann, bleibt nur, die gefilterten Datensätze von Anfang bis Ende durchzulaufen und mitzuzählen:
Dabei wird mit Hilfe von DisableControls/EnableControls verhindert, dass beim Zählen die Records im Grid durchlaufen; auch wird ein Bookmark gesetzt, so dass hinterher wieder auf den aktiven Record zurückgesprungen werden kann.
Ach und übrigens: Auf den Link zu den Filtern hat dich weit oben schon Michl hingewiesen. Haste offenbar nicht gelesen...
Code: Alles auswählen
function CountRecords(ADataset: TDataset): Integer;
var
bm: TBookmark;
begin
Result := 0;
ADataset.DisableControls;
bm := ADataset.GetBookmark;
try
ADataset.First;
while not ADataset.EoF do begin
inc(Result);
ADataset.Next;
end;
ADataset.GotoBookmark(bm);
finally
ADataset.FreeBookmark(bm);
ADataset.EnableControls;
end;
end;
Ach und übrigens: Auf den Link zu den Filtern hat dich weit oben schon Michl hingewiesen. Haste offenbar nicht gelesen...
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TDBF : suche
Das sieht nun insgesamt (zusammen mit dem Tutorial von Michl) ziemlich gut aus.
Schade, dass die wenigen TDBF-Tutorials, die es gibt, so schlecht zu finden sind.
Vielleicht mache ich mal eine aktuelle Liste...
Schade, dass die wenigen TDBF-Tutorials, die es gibt, so schlecht zu finden sind.
Vielleicht mache ich mal eine aktuelle Liste...