[gelöst] Wie arbeitet die LOCATE Anweisung?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
wega
Beiträge: 57
Registriert: Di 6. Dez 2011, 15:36

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von wega »

Hallo Theo,

nun, Groß- oder Kleinschreibung wird doch weitestgehendst ignoriert.

Ich habe aber Deinen Rat befolgt und PERS_ID gesetzt.
Im nachfolgenden Bild siehst du aber, daß ID den richtigen Record anzeigt, aber der Rest mit DBEdit ausgelesen noch immer auf dem ein Record "1" steht.
Entweder blick ich nicht durch, oder es besteht doch ein Bug.
Bild-04.jpg
Gruß
Werner

MmVisual
Beiträge: 1581
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von MmVisual »

Die PERS_ID ist doch eindeutig, also brauchst Du keinen Locate auf den Nachname.

Da das PERS_ID Feld ein Integer ist, muss an der Locate Position auch der Wert als Zahl nicht als Text übergeben werden.
EleLa - Elektronik Lagerverwaltung - www.elela.de

wega
Beiträge: 57
Registriert: Di 6. Dez 2011, 15:36

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von wega »

Hallo zusammen,

herrje Leute ist denn das so schwer den Fragen hier zu antworten?

Geht doch einfach mal auf [gelöst] dBase-Dateien, holt euch da den Quellcode und versucht den Recordsatz anzuspringen.
Das kann doch nicht so schwer sein oder ?
Die klugen Antworten gehen einem doch endlich mal auf dem Keks.
Habt ihr dafür kein Verständnis?

mit Gruß
Werner

Benutzeravatar
theo
Beiträge: 10865
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von theo »

wega hat geschrieben: herrje Leute ist denn das so schwer den Fragen hier zu antworten?
Welche Frage?
Ich hab dir hier schon mal gesagt, dass ich deine Frage nicht richtig verstehe.

Veilleicht würdest du von jemandem eine vernünftige Antwort bekommen, wenn du eine vernünftige Frage stellen würdest, so schön altmodisch mit Fragezeichen und so, dass man nicht erst 50 alte Beiträge lesen muss, um sie zu verstehen.

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: Wie arbeitet die LOCATE Anweisung?

Beitrag von Christian »

wega, ich habs gerad angefangen hab aber nach 3 min warten auf dieses Forum aufgegeben.
Du willst hier etwas.
D.H. Häng ein möglichst kleines einfaches Beispiel hier an das möglichst wenig Komponenten verwendet.
Ich werd warscheinlich trotsdem nicht weiterkommen da ich keine Lust hab das fehleranfällige Tdbf nur für dich zu installieren.
Ich bin mir aber recht sicher das Locate dabei funktioniert hat als ichs das letzte mal verwendet hatte.
Mach dir bewusst, das du etwas willst. Wenn Theo sich also über deine Fragekultur beschwert nimms bitte als Kritik auf nicht als Meckerei.
Und glaub mir er ist wenn du ordentlich kommunizierst durchaus dazu in der lage dir so ziemlich jedes Lazarus/FPC basierte problem zu lösen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
theo
Beiträge: 10865
Registriert: Mo 11. Sep 2006, 19:01

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von theo »

Christian hat geschrieben: Und glaub mir er ist wenn du ordentlich kommunizierst durchaus dazu in der lage dir so ziemlich jedes Lazarus/FPC basierte problem zu lösen.
Danke Christian, sehr freundlich. :D
Aber von Lazarus DB - und noch dazu mit DataSet-Hangeleien und DBase - habe ich wirklich nicht viel Anhnung.
Ich denke, da gäbe es kompetentere Hilfen.

bsdmike
Beiträge: 6
Registriert: Fr 26. Okt 2007, 12:27
OS, Lazarus, FPC: Win (L 0.9.30 FPC 2.4.2)
CPU-Target: 32Bit

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von bsdmike »

Hallo wega,

war schon länger nicht mehr aktiv hier im Forum und wenn dann meist nur als stiller Mitleser. Hab mir Dein Programm trotzdem mal kurz angeschaut.

Soweit ich es verstanden habe möchstest Du über das Anklicken der Listen nach Vorname, Nachname, Ort suchen. Du verwendest aber im Locate als KeyField jeweils die Pers_ID. D.h. eigentlich müsste Deine Suche ja in etwa so erfolgen (Beispiel für Vorname mit Eingabe über ein normales Edit Feld):

Code: Alles auswählen

locate('vorname', Edit1.text', [])
Warum Du die DBLookupListBox zum Suchen verwendest hat sich mir nicht so ganz erschlossen. Die wäre doch eher gedacht zur Auswahl von Werten in einer LookupTabelle.

Gruss Mike

wega
Beiträge: 57
Registriert: Di 6. Dez 2011, 15:36

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von wega »

Hallo Mike,

Danke, dass Du einmal in mein Projekt hineingeschaut hast.
Das Key-Feld 'Pers_ID' ist schon richtig, da in den unterschiedlichsten Records die Vornamen, oder auch die Nachnamen gleich sein können.
Was aber garantiert unteschiedlich ist, das ist die 'Pers_ID'-Nummer.
Und mit dem Locate-Befehl/Anweisung will ich auf den "richtigen" Record zugreifen, da ich keinen Zugang zu "MoveTo" finde.

Na gut, dann muß man wahrscheinlich auf andere Felder wie geb.-Datum, Ort, Straße usw. zugreifen, um die richtige Person zu finden.

Vielen Dank für Deine Bemühungen und Deine Antwort.
Macht mir Hoffung, daß man hier auch ein normales Deutsch spricht.

Gruß Werner

bsdmike
Beiträge: 6
Registriert: Fr 26. Okt 2007, 12:27
OS, Lazarus, FPC: Win (L 0.9.30 FPC 2.4.2)
CPU-Target: 32Bit

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von bsdmike »

Hallo Werner,

bitte schön, gern geschehen.

Hab gerade auch noch mal hier nachgeschaut:
http://www.freepascal.org/docs-html/fcl ... ocate.html

Wenn Du nach Pers_id und Vorname gleichzeitig suchen willst, dann lassen sich durch Semikolon getrennt auch mehrere KeyFields zur Suche angeben. Hab das jetzt nicht ausprobiert, aber mit dieser Kombination müsste sich auch ein mehrfach vorkommender Namenseintrag in Verbindung mit der Pers_id korrekt finden lassen.

Gruss Mike

wega
Beiträge: 57
Registriert: Di 6. Dez 2011, 15:36

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von wega »

Hallo Mike,

Danke für Deine Antwort.

Theo brachte ebenfalls diese Idee ein. Ich habe es ohne Erfolg probiert.
Vielleicht interpretiere ich aber die Anweisung falsch, NICHTS IST AUSGESCHLOSSEN.

Ich lasse es erst einmal dabei, daß man über andere Selectionen wiem z.B. Ort die richtige Person findet.

mit Gruß
Werner

bsdmike
Beiträge: 6
Registriert: Fr 26. Okt 2007, 12:27
OS, Lazarus, FPC: Win (L 0.9.30 FPC 2.4.2)
CPU-Target: 32Bit

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von bsdmike »

Hallo Werner,

kurz angetestet mit zwei Edit Feldern und doppelten Nachnamen.

Code: Alles auswählen

Dbf1.Locate('PERS_ID;VORNAME', VarArrayOf([Edit1.Text, Edit2.Text]), [])
Locate funktioniert so korrekt und findet immer den richtigen Eintrag.

In Verbindung mit Deiner DBLoopup auf die gleiche Datasource funktioniert es aber nicht. Da müsstest Du schon mit mehreren Datasourcen arbeiten.

Gruss Mike

wega
Beiträge: 57
Registriert: Di 6. Dez 2011, 15:36

Re: Wie arbeitet die LOCATE Anweisung?

Beitrag von wega »

Hallo Mike,

Danke für deine Antwort.
OK, also doch eine Fehlinterpretation der Anweisung bei mir.
Nochmals Danke für den Hinweis.

mit Gruß
Werner

Antworten