Hallo zusammen,
ich hatte heute schon eine Frage ins Forum gestellt, aber ich bin grade etwas verzweifelt, dass ich Euch nochmal mit einer Frage belästigen muss:
Ich habe eine kleine Datenbank, Tabelle liegt im CSV-Format vor (kommagetrennt), kann mit einem SdfDataSet wunderbar angesteuert werden.
Wenn ich jedoch zwecks Suche mit dem "locate"-Befehl arbeiten will, funktioniert das nicht. Ich kriege keine Fehlermeldung, sondern das Suchkriterium scheint einfach nicht zu finden zu sein.
Um das auszutesten, habe ich einen Button mit folgendem Event versehen:
if not datasource1.DataSet.Locate('Name','Meier',[loCaseInsensitive,loPartialKey])
then ShowMessage('Kein Datensatz da');
Wie ich es auch drehe und wende: Ich erhalte die o.g. Fehlermeldung "Kein Datensatz da". Es gibt aber den "Meier" in der Tabelle im Feld "Name".
Liegt es an der CSV Tabelle? Am Dataset? Ich habe schon mehrere Stunden über diesem Fehler gebrütet, google spuckt auch so gar nix aus. Allüberall scheint locate zu fluppen. Nur beim Olli net. Das findet der Olli nicht nett!
LG
Olli
probleme mit locate bei sdfdatasets
- af0815
- Lazarusforum e. V.
- Beiträge: 6784
- 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: probleme mit locate bei sdfdatasets
Das sdfDataSet ist keine Datenbank PUNKT. Deshalb sind die meisten Sachen, die nicht nur dem linearen Lesen oder Schreiben entsprechen, nicht implementiert PUNKT
Ich habe dir schon im anderen Thread einen Verweis auf einen Beitrag von Theo gemacht, dort steht ein möglicher Workaround.
Andreas
Ich habe dir schon im anderen Thread einen Verweis auf einen Beitrag von Theo gemacht, dort steht ein möglicher Workaround.
Du wirst Locate nur emulieren können. Nochmals, es ist keine Datenbank, also wirst du dich um alles selbst kümmern müssen.theo hat geschrieben:Ein TSdfDataSet auf das File ansetzen wäre eine einfache Möglichkeit.
Eigenschaft Delimiter auf ';' und Filtered auf True.
Anzeigen via TDatasource in einem TDBGrid.
In OnFilterRecord kann man sowas machen:
Code: Alles auswählen
procedure TForm1.SdfDataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept:=Dataset.Fields[0].AsString='Aha'; end;
Andreas
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: probleme mit locate bei sdfdatasets
Nimm doch einfach SQLite, da brauchst auch keinen Server und hast nahezu die volle Power eines SQL Servers
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
- af0815
- Lazarusforum e. V.
- Beiträge: 6784
- 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: probleme mit locate bei sdfdatasets
Den Vorschlag gabs auch schon im anderen Thread.Christian hat geschrieben:Nimm doch einfach SQLite, da brauchst auch keinen Server und hast nahezu die volle Power eines SQL Servers
Es ist auch so, das sich keiner Gedanken darüber macht, das es DataAccess Seiten für die Komponenten gibt und SQLdb. DataAccess heist halt nur Zugriff, von Ver bzw. Bearbeitung hat keiner was gesagt. Und bei SQLdb ist das drinnen was draufsteht.
Immer dasselbe, man kauft einen Tata in der Basisversion und erwartet Fahrleistung und Komfort eines Quattro.
EDIT:
Wenn man sich die Sourcen ansieht, so sieht man, das Locate IMHO nicht überschrieben wird und immer false zurück gibt, daher nicht implementiert. >Etwas weniger Google und mehr an Quellcodelesen hilft oft (SCNR).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 5
- Registriert: Sa 6. Feb 2016, 14:45
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Kürten
Re: probleme mit locate bei sdfdatasets
Nachdem mir Andreas noch mal auf die Finger gehauen hat, habe ich mich ein wenig mit SQLite beschäftigt und war baff erstaunt, wie unkompliziert das ging.
Ums kurz zu machen: alles funktioniert! Danke!
So, und während die Quattros schon wieder tanken müssen, tuckere ich mit meinem Tata vorbei und wink Euch mal fröhlich zu. \(^.^)/
Ums kurz zu machen: alles funktioniert! Danke!
So, und während die Quattros schon wieder tanken müssen, tuckere ich mit meinem Tata vorbei und wink Euch mal fröhlich zu. \(^.^)/
- af0815
- Lazarusforum e. V.
- Beiträge: 6784
- 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: probleme mit locate bei sdfdatasets
Gratulation,
ich wollte nicht wirklich grob sein. So wie es aussieht ist es aber auf fruchtbaren Boden gefallen. Die nächste Hürde könnte sein, das Deine Änderungen nicht dauerhaft gespeichert werden
Wenn das der Fall ist, nimms nicht tragisch das hat fast jeder durchmachnen müssen. 
ich wollte nicht wirklich grob sein. So wie es aussieht ist es aber auf fruchtbaren Boden gefallen. Die nächste Hürde könnte sein, das Deine Änderungen nicht dauerhaft gespeichert werden


Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 5
- Registriert: Sa 6. Feb 2016, 14:45
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Kürten
Re: probleme mit locate bei sdfdatasets
Danke Dir, alles gut! 
Nachdem Du das geschrieben hattest, ging ich etwas irritiert wieder in mein Programm und murmelte ungefähr so was in der Art "Wie, die Daten werden nicht dauerhaft gespeichert? Klappt doch alles einwandfr.... oh! F***!"
Habe dann die Befehle ApplyUpdates, Commit, etc etc kennengelernt, danach die Hürde gerissen, dass die SQL Komponenten erst während runtime auf active / connected gesetzt werden müssen. Ein paar Stunden später ist das Ergebnis nun einwandfrei!
So, jetzt hör ich aber auf hier.

Nachdem Du das geschrieben hattest, ging ich etwas irritiert wieder in mein Programm und murmelte ungefähr so was in der Art "Wie, die Daten werden nicht dauerhaft gespeichert? Klappt doch alles einwandfr.... oh! F***!"
Habe dann die Befehle ApplyUpdates, Commit, etc etc kennengelernt, danach die Hürde gerissen, dass die SQL Komponenten erst während runtime auf active / connected gesetzt werden müssen. Ein paar Stunden später ist das Ergebnis nun einwandfrei!

So, jetzt hör ich aber auf hier.
