TSdfDataSet Filter nicht möglich
-
KOBOLD Messring GmbH
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
TSdfDataSet Filter nicht möglich
Habe eine kleine generelle Frage:
Während man über die Filter-Funktion bei z.B. DBase (TDbf) fast wie bei SQL mit WHERE Datensätze auswählen kann, habe ich das bei der Text-Datei-basierten Komponente TSdfDataSet nicht hinbekommen, obwohl es da genauso die Eigenschaft Filter und Filtered gibt. ¿Ist das generell so, oder mach ich da was falsch?
Egal was ich da reinschreibe, es wird vollkommen ignoriert, auch totaler Blödsinn (z.B. einfach "grüne Hühner") führt nicht einmal zu einem DB-Fehler (Dbase sagt da ganz richtig "unknown field").
¿Sieht so aus, als ob die Filter-Funktion bei dem TSdfDataSet überhaupt (noch) nicht implementiert sei?
Während man über die Filter-Funktion bei z.B. DBase (TDbf) fast wie bei SQL mit WHERE Datensätze auswählen kann, habe ich das bei der Text-Datei-basierten Komponente TSdfDataSet nicht hinbekommen, obwohl es da genauso die Eigenschaft Filter und Filtered gibt. ¿Ist das generell so, oder mach ich da was falsch?
Egal was ich da reinschreibe, es wird vollkommen ignoriert, auch totaler Blödsinn (z.B. einfach "grüne Hühner") führt nicht einmal zu einem DB-Fehler (Dbase sagt da ganz richtig "unknown field").
¿Sieht so aus, als ob die Filter-Funktion bei dem TSdfDataSet überhaupt (noch) nicht implementiert sei?
-
mse
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: TSdfDataSet Filter nicht möglich
OnFilterRecord sollte funktionieren:KOBOLD Messring GmbH hat geschrieben: ¿Sieht so aus, als ob die Filter-Funktion bei dem TSdfDataSet überhaupt (noch) nicht implementiert sei?
Code: Alles auswählen
function TFixedFormatDataSet.RecordFilter(RecBuf: Pointer; ARecNo: Integer): Boolean;
var
Accept: Boolean;
SaveState: TDataSetState;
begin // Returns true if accepted in the filter
SaveState := SetTempState(dsFilter);
FFilterBuffer := RecBuf;
PRecInfo(FFilterBuffer + FRecInfoOfs)^.RecordNumber := ARecNo;
Accept := TRUE;
if Accept and Assigned(OnFilterRecord) then
OnFilterRecord(Self, Accept);
RestoreState(SaveState);
Result := Accept;
end;-
KOBOLD Messring GmbH
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: TSdfDataSet Filter nicht möglich
Hola lieber Martin,
ja, diese Funktion ist bei mir auch vorhanden (in /usr/share/fpcsrc/2.2.2/packages/fcl-db/src/sdf/sdfdata.pp der fp-compiler sollte das eigentlich auch verwenden), funktioniert aber trotzdem nicht
¡Ist mir aber inzwischen egal!
Denn ich habe mich für TDbf (also DBase) entschieden.
Ich brauche:
* eine Desktop-Datenbank, da ich - diesmal - keinen DB-Server verwenden kann.
* eine DB, die OHNE Client-Bibliotheken funktioniert, will auch kein ODBC verwenden, da ich keine aufwendige Installation und (fast) keinerlei Abhängigkeiten haben will, Motto: Programm-CD einlegen und los-gehts: Keine Installation, kein Eingriff ins System.
* aber Datenbank-Funktionalität, super wäre SQL (da ich über mehrere Tabellen Inner- und Outer-Joins machen müsste und Datensätze einschränken will), das geht aber nicht, also muss ich das wohl über Filter-Funktionen, MasterFields/MasterSource-Funktionen machen.
* aber nur wenig Datensätze (in den Stammdaten-Tabellen ca 100, in 3 Verknüpfungs-Tabellen maximal 25000 Datensätze (nur Integer mit Integer, keine Strings)
Meine Wahl fiel - gemäss dem Wiki - damit auf DBase, dass müsste dBase doch eigentlich schaffen.
¿Habt Ihr vielleicht damit Erfahrungen oder einen besseren Vorschlag?
ja, diese Funktion ist bei mir auch vorhanden (in /usr/share/fpcsrc/2.2.2/packages/fcl-db/src/sdf/sdfdata.pp der fp-compiler sollte das eigentlich auch verwenden), funktioniert aber trotzdem nicht
¡Ist mir aber inzwischen egal!
Ich brauche:
* eine Desktop-Datenbank, da ich - diesmal - keinen DB-Server verwenden kann.
* eine DB, die OHNE Client-Bibliotheken funktioniert, will auch kein ODBC verwenden, da ich keine aufwendige Installation und (fast) keinerlei Abhängigkeiten haben will, Motto: Programm-CD einlegen und los-gehts: Keine Installation, kein Eingriff ins System.
* aber Datenbank-Funktionalität, super wäre SQL (da ich über mehrere Tabellen Inner- und Outer-Joins machen müsste und Datensätze einschränken will), das geht aber nicht, also muss ich das wohl über Filter-Funktionen, MasterFields/MasterSource-Funktionen machen.
* aber nur wenig Datensätze (in den Stammdaten-Tabellen ca 100, in 3 Verknüpfungs-Tabellen maximal 25000 Datensätze (nur Integer mit Integer, keine Strings)
Meine Wahl fiel - gemäss dem Wiki - damit auf DBase, dass müsste dBase doch eigentlich schaffen.
¿Habt Ihr vielleicht damit Erfahrungen oder einen besseren Vorschlag?
-
mse
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: TSdfDataSet Filter nicht möglich
Die Filter property wird nicht ausgewertet, du musst OnFilterRecord verwenden, zusätzlich muss Filtered:= true gesetzt werden. Funktioniert es immer noch nicht?KOBOLD Messring GmbH hat geschrieben: ja, diese Funktion ist bei mir auch vorhanden (in /usr/share/fpcsrc/2.2.2/packages/fcl-db/src/sdf/sdfdata.pp der fp-compiler sollte das eigentlich auch verwenden), funktioniert aber trotzdem nicht
SQLite3, eventuell statisch eingebunden? Die SQLite3 Lizenz erlaubt es AFAIK.Meine Wahl fiel - gemäss dem Wiki - damit auf DBase, dass müsste dBase doch eigentlich schaffen.
¿Habt Ihr vielleicht damit Erfahrungen oder einen besseren Vorschlag?
-
KOBOLD Messring GmbH
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: TSdfDataSet Filter nicht möglich
¿Wie macht man denn das?mse hat geschrieben:SQLite3, eventuell statisch eingebunden?
Alles was ich in den Tutorials darüber gefunden habe, besagt, dass man zuerst die Bibliotheken installieren muss, gerade aber dass möchte ich vermeiden.
-
mse
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: TSdfDataSet Filter nicht möglich
Da müsste in der unit sqlite3conn in uses sqlite3dyn durch sqlite3 ersetzt werden (nicht getestet).
Die Mitgabe von sqlite3.dll ist aber auch kein Problem, unter Windows einfach in das gleiche Verzeichnis wie die Applikations-exe-Datei kopieren.
Die Mitgabe von sqlite3.dll ist aber auch kein Problem, unter Windows einfach in das gleiche Verzeichnis wie die Applikations-exe-Datei kopieren.
-
KOBOLD Messring GmbH
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: TSdfDataSet Filter nicht möglich
Das funktioniert leider nicht, dann findet er diverse Methoden (?) oder Procedure nicht, die es offenbar nur in sqlite3dyn gibt.mse hat geschrieben:uses sqlite3dyn durch sqlite3 ersetzt werden (nicht getestet).
naja, trotzdem vielen Dank.
-
creed steiger
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: TSdfDataSet Filter nicht möglich
Evtl. JanSQL?
http://forum.lazarus.freepascal.org/ind ... pic=6086.0" onclick="window.open(this.href);return false;
http://freepascal.org/contrib/db.php3?category=Database" onclick="window.open(this.href);return false;
http://forum.lazarus.freepascal.org/ind ... pic=6086.0" onclick="window.open(this.href);return false;
http://freepascal.org/contrib/db.php3?category=Database" onclick="window.open(this.href);return false;
-
Christian
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: TSdfDataSet Filter nicht möglich
@Kobold Messring
von TDbf würd ich bei grösseren Datenmengen die auch halbwegs wichtig sein könnten dringendst abraten. Ich hab beim Prometheus damals erst Probleme bekommen nachdem ich den e-Mail Client dafür geschrieben habe und 500 Mails täglich die Datenbank belasteten aber dafür umso heftiger. Resultat waren zerstörte Datenbanken die kein DBase Reparaturtool wiederbeleben konnte. TDbf ist toll um was kleines zu machen oder vorhandene Datenbanken zu importieren in wichtigen Sytemen würd ich das nie wieder verwenden.
von TDbf würd ich bei grösseren Datenmengen die auch halbwegs wichtig sein könnten dringendst abraten. Ich hab beim Prometheus damals erst Probleme bekommen nachdem ich den e-Mail Client dafür geschrieben habe und 500 Mails täglich die Datenbank belasteten aber dafür umso heftiger. Resultat waren zerstörte Datenbanken die kein DBase Reparaturtool wiederbeleben konnte. TDbf ist toll um was kleines zu machen oder vorhandene Datenbanken zu importieren in wichtigen Sytemen würd ich das nie wieder verwenden.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
mse
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: TSdfDataSet Filter nicht möglich
Habe die MSEgui Version von tsqlite3connection mit einem Schalter für statisches linken der SQLite3 lib ausgestattet (trunk 2858).KOBOLD Messring GmbH hat geschrieben:Das funktioniert leider nicht, dann findet er diverse Methoden (?) oder Procedure nicht, die es offenbar nur in sqlite3dyn gibt.mse hat geschrieben:uses sqlite3dyn durch sqlite3 ersetzt werden (nicht getestet).
Für statisches linken ist etwas Handarbeit notwendig. Für Linux:
Kompiliere mit den Parametern -dmse_sqlite3static -Cn.
In link.res ersetze
Code: Alles auswählen
INPUT(
-ldl
-lpthread
-lX11
-lsqlite3
-lc
)Code: Alles auswählen
INPUT(
-ldl
-lpthread
-lX11
/usr/lib/libsqlite3.a
/usr/lib/gcc/i586-suse-linux/4.3/libgcc.a
-lc
)Starte das script ppas.sh.
ldd sollte nun keine libsqlite3 Abhängigkeit mehr anzeigen:
Code: Alles auswählen
ldd ./sqlite
linux-gate.so.1 => (0xffffe000)
libdl.so.2 => /lib/libdl.so.2 (0xb7f21000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7f07000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb7dd4000)
libc.so.6 => /lib/libc.so.6 (0xb7c78000)
/lib/ld-linux.so.2 (0xb7f52000)
libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0xb7c75000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb7c57000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb7c52000)
Zuletzt geändert von mse am Mo 2. Mär 2009, 09:43, insgesamt 1-mal geändert.
-
KOBOLD Messring GmbH
- Beiträge: 155
- Registriert: Mi 22. Aug 2007, 14:52
- OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 65719 Hofheim am Taunus
- Kontaktdaten:
Re: TSdfDataSet Filter nicht möglich
@Christian: Vielen Dank für den Hinweis, habe keinerlei Erfahrungen mit DBase, aber ich glaube ich lasse die Finger davon und nehme SQLite
@Martin: ¡Vielen, vielen Dank! ich glaube so mache ich das, bist eine grossartige Hilfe.
@Martin: ¡Vielen, vielen Dank! ich glaube so mache ich das, bist eine grossartige Hilfe.
-
Christian
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: TSdfDataSet Filter nicht möglich
ja hab ich dann auch gemacht. Mit ZeOS und bin bis heut recht zufrieden damit. Multiuser ist nicht wirklich toll möglich mit SQLite aber es geht zur not auch.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
psycodad
- Beiträge: 18
- Registriert: Mi 13. Dez 2006, 12:57
- OS, Lazarus, FPC: Win OS X (L 0.9.28 FPC 2.4.3)
- CPU-Target: 32Bit/64Bit
- Wohnort: Embrach ZH / Schweiz
- Kontaktdaten:
Re: TSdfDataSet Filter nicht möglich
Kann nicht firebird als embedded gelinkt werden?
Bankraub: eine Initiative von Dilettanten. Wahre Profis gründen eine Bank.... Bertolt Brecht
-
mse
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: TSdfDataSet Filter nicht möglich
Ich bin nicht sicher, ob die Lizenz statisches linken zulässt.psycodad hat geschrieben:Kann nicht firebird als embedded gelinkt werden?
-
psycodad
- Beiträge: 18
- Registriert: Mi 13. Dez 2006, 12:57
- OS, Lazarus, FPC: Win OS X (L 0.9.28 FPC 2.4.3)
- CPU-Target: 32Bit/64Bit
- Wohnort: Embrach ZH / Schweiz
- Kontaktdaten:
Re: TSdfDataSet Filter nicht möglich
Auf jeden Fall gibts ne Integration in Lazarus.
http://sourceforge.net/project/showfile ... _id=260272" onclick="window.open(this.href);return false;
Wie das Lizenztechnisch aussieht, wird wohl auf der firebird homepage stehen.
http://sourceforge.net/project/showfile ... _id=260272" onclick="window.open(this.href);return false;
Wie das Lizenztechnisch aussieht, wird wohl auf der firebird homepage stehen.
Bankraub: eine Initiative von Dilettanten. Wahre Profis gründen eine Bank.... Bertolt Brecht