Wie erstellt man zusammengesetzte/calculated tdbf-Indizes,
sodass sie sich nicht einfach nur auf 1 Feld beziehen ?
- Mit einem einfachen Index auf ein berechnetes Feld scheint es nicht zu gehen,
- da dieses beim nächsten "open" als nicht existierend angemahnt wird:
- "Index based on unknown field"
mögl.: Alternativen :
1. copy(Namefeld.asstring,3,10)+ (IDFeld.asinteger-20); // aber wie geht das wirklich ???
...(Ich weiß, dass das ein recht abstruses Beispiel ist, aber es enthält das komplette Problem).
2. wie bekommt man tdbf dazu, ein berechnetes Feld als Indexfeld anzuerkennen
...(das wäre die eleganteste Lösung)
.
komplexer dbf Index
Re: komplexer dbf Index
Ungleiche Typen, String + Int funktionieren nicht.arturx hat geschrieben: 1. copy(Namefeld.asstring,3,10)+ (IDFeld.asinteger-20); // aber wie geht das wirklich ???
...(Ich weiß, dass das ein recht abstruses Beispiel ist, aber es enthält das komplette Problem).
.
So solle es klappen:
Code: Alles auswählen
copy(Namefeld.asstring,3,10)+ IntToStr(IDFeld.asinteger-20);
Baba.
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: komplexer dbf Index
Nachdem du da mit Desktopdatenbanken haderst, würde ich sage, zuerst berechnen, dann in der DB mitspeichern und es geht dann sauber mit dem Indizieren.arturx hat geschrieben: 2. wie bekommt man tdbf dazu, ein berechnetes Feld als Indexfeld anzuerkennen
...(das wäre die eleganteste Lösung)
.
Philosophisch betrachtet:
Es hat einen Sinn warum es Desktop und Serverbasierende Datenbanken gibt. Mögliche Lösungen / Denkweisen aus der Serverwelt passen nicht zu 'einfachen' Datenbanken.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 140
- Registriert: Fr 21. Nov 2008, 11:29
- OS, Lazarus, FPC: Winux (L 1.0.6.xy FPC 2.6.z)
- CPU-Target: 32/64Bit
Re: komplexer dbf Index
1.
Es gibt allerdings auch keine Möglichkeit, einen dbase-like string für die Indexerstellung zu hinterlegen (oder doch??).
(Dass String und integer so nicht zusammengehen war mir schon klar, entschuldigt das Beispiel)
2.
die mir eingefallen ist zu dem Problem. Ich wollte halt gern die Reundanz der Daten vermeiden.
Unter Delphi habe ich mit TOPAZ gearbeitet : da konnte man für dbase Dateien beliebig zusammengestzte Indizes
definieren und nutzen. (Auch sonst war ich von den Möglichkeiten von Topaz begeistert) .
Leider habe ich es bis heute nicht geschafft, Topaz zu portieren.
Der hersteller Softscience (http://www.softsci.com" onclick="window.open(this.href);return false;) scheint leider nicht daran interessiert zu sein,
ein Package für Lazarus anzubieten.
Klar ist bei einer größeren Anwendung die serverbasierte Lösung sinnvoll; aber selbst bei kleinen Anwendungen ist
es nett, etwas komplexere Sortierungen definieren zu können ohne gleich mehr Felder speichern zu müssen.
Vielleicht hat ja noch irgendjemand eine andere Idee /Alternative/Erweiterung zu tDBF ?!
Auf alle Fälle Danke für die Mühe !
Rainer
geht zumindestens nicht als calculated Feld : der Compiler akzeptiert keinen Index auf ein berechnetes Feld.af0815 hat geschrieben:Baba : "copy(Namefeld.asstring,3,10)+ IntToStr(IDFeld.asinteger-20)"
Es gibt allerdings auch keine Möglichkeit, einen dbase-like string für die Indexerstellung zu hinterlegen (oder doch??).
(Dass String und integer so nicht zusammengehen war mir schon klar, entschuldigt das Beispiel)
2.
Den Index als Feld mitzuspeichern ist bis jetzt auch die einzige Lösung,af0815 hat geschrieben:Nachdem du da mit Desktopdatenbanken haderst, würde ich sage, zuerst berechnen, dann in der DB mitspeichern
und es geht dann sauber mit dem Indizieren.
Philosophisch betrachtet:
Es hat einen Sinn warum es Desktop und Serverbasierende Datenbanken gibt. Mögliche Lösungen / Denkweisen aus der Serverwelt passen nicht zu 'einfachen' Datenbanken.
die mir eingefallen ist zu dem Problem. Ich wollte halt gern die Reundanz der Daten vermeiden.
Unter Delphi habe ich mit TOPAZ gearbeitet : da konnte man für dbase Dateien beliebig zusammengestzte Indizes
definieren und nutzen. (Auch sonst war ich von den Möglichkeiten von Topaz begeistert) .
Leider habe ich es bis heute nicht geschafft, Topaz zu portieren.
Der hersteller Softscience (http://www.softsci.com" onclick="window.open(this.href);return false;) scheint leider nicht daran interessiert zu sein,
ein Package für Lazarus anzubieten.
Klar ist bei einer größeren Anwendung die serverbasierte Lösung sinnvoll; aber selbst bei kleinen Anwendungen ist
es nett, etwas komplexere Sortierungen definieren zu können ohne gleich mehr Felder speichern zu müssen.
Vielleicht hat ja noch irgendjemand eine andere Idee /Alternative/Erweiterung zu tDBF ?!
Auf alle Fälle Danke für die Mühe !
Rainer
- af0815
- Lazarusforum e. V.
- Beiträge: 6766
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: komplexer dbf Index
Kann man dein Problem vielleicht so umdefinieren, das besser zu tDBF passt ?arturx hat geschrieben: Vielleicht hat ja noch irgendjemand eine andere Idee /Alternative/Erweiterung zu tDBF ?!
Auf alle Fälle Danke für die Mühe !
Rainer
Ich nehme an, du willst es unique haben und nutzt den Index dafür !?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- 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: komplexer dbf Index
Wofür willst du das machen ? ich habs schon oft hier erwähnt aber ich sags nochmal tDbf würd ich ganz schnell vergessen wenns um grössere Datenmengen geht. Ich hab mich dabei mal ziemlich angesch*****. Plötzlich war eine Wichtige Tabelle korrupt und kein Reparaturtool konnte mehr irgendwas machen. Ich würde für komplexere Sachen SQLite nehmen da kann man auch recht komplexe indexes definieren wunderbar filtern und das ganze ist noch schön flott und um deine Daten brauchst du dr auch keine Sorgen zu machen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 205
- Registriert: So 2. Dez 2007, 20:47
- OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
- CPU-Target: xxBit
- Wohnort: Schweiz
Re: komplexer dbf Index
TDBF kannste total vergessen. DBF Dateien laufen nur mit XBase Entwicklungsumgebungen. Nimm SQLLite und Du hast keine solchen Probleme. Habs wirklich mit TDBF versucht, doch hatte nur Probleme genau wie Du. TDBF empfehle ich nur zum Einlesen alter Datenbankbestände.
Ansonsten hier noch ein Link zu einem TDBF Programm, mit Index und gut dokumentiert:
http://www.rgsoftware.de/" onclick="window.open(this.href);return false;
Peter
Ansonsten hier noch ein Link zu einem TDBF Programm, mit Index und gut dokumentiert:
http://www.rgsoftware.de/" onclick="window.open(this.href);return false;
Peter