Entwickler-Ecke

Datenbanken - Zu Zeile mit bestimmter ID springen


LonghornUser - Fr 09.04.10 21:32
Titel: Zu Zeile mit bestimmter ID springen
Hallo,

ich möchte gerne eine Funktion "Springe zu Zeile mit bestimmter ID..." implementieren. Da mir der betreffende Befehl fehlt, habe ich folgende (ziemlich miese ;)) Lösung erdacht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
s := InputBox('SalesSystem - Eingabe',
      'Bitte geben Sie die gewünschte ID ein:''');
    while (s <> ''and (ZQuery1.FieldByName('ID').AsString <> s) do
    begin
      ZQuery1.Next;
    end;


Habt ihr da vielleicht etwas besseres?

Ciao LHUser


Xentar - Fr 09.04.10 22:06

user profile iconLonghornUser hat folgendes geschrieben Zum zitierten Posting springen:
Da mir der betreffende Befehl fehlt,

Glaub das war irgendwas mit Query.Locate oder so?


LonghornUser - So 11.04.10 15:31

Ich habe das ganze so probiert, aber der Befehl liefert immer False :(

Delphi-Quelltext
1:
ZQuery1.Locate('ID', s, []);                    


RonLipp - Mo 12.04.10 14:39

Das Feld 'ID' sollte existieren und von Typ String sein.
Beim Doppelklick auf die Komponente ZQuery1 lässt sich das prüfen.


zuma - Mo 12.04.10 15:21

ist deine ID vom Typ String oder Integer?
ist in s direkt vor dem locate auch nur der 'richtige' Eingabewert (z.b. '3') oder ist da noch evtl. ein (Leer-)zeichen drin (z.b. '3 ') ?
versuch mal:

Delphi-Quelltext
1:
2:
3:
4:
s := InputBox('SalesSystem - Eingabe',
      'Bitte geben Sie die gewünschte ID ein:''');
if not zquery1.Locate('ID', StrToInt(s), []) then
 showmessage('ID nicht gefunden');


die Prüfung per doppelklick funktioniert nicht zwangsläufig, besser ist es, in der DB-Tabelle (oder, falls Datenmenge nicht aus db, in der Erzeuge-Routine für die Datenmenge, mit der das Grid verbunden ist) den Feldnamen/Feldtyp zu prüfen und im Code dann entsprechend zu verwenden.


LonghornUser - Mo 12.04.10 21:11

Euer Hinweis war genau richtig. Die ID war ein Integer und ein String. Macht auch irgendwie Sinn ;)

Danke!!