Announcement

Collapse
No announcement yet.

Zu einem bestimmten Datensatz springen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zu einem bestimmten Datensatz springen

    Für die Datenrecource eines Formulars habe ich eine Query gebildet. Wie kann ich unter Delphi 5 erreichen, dass ich z.B. beim Aktivieren des Formulars gleich auf einen bestimmten Datensatz springe, mir aber trotzdem alle selektierten Datensätze zur Navigation erhalten bleiben?

  • #2
    willst du zu einem datensatz in dem in einem bestimmten feld ein bestimmter wert ist??
    Angenommen du suchst in einer adressdatenbank in einem feld matchcode einen bestimmten
    namen.
    mache folgendes:

    query1.disableControls;\\ weiß grad nicht ob disableControls oder disabledControls!!! <br>
    query1.first;<br>
    while not query1.eof do<br>
    begin<br>
    if query1matchode.value = 'Lemcke' then exit;
    query1.next;

    end;<br>
    query1.enable(d)Controls;

    was macht der code:
    du gehst mit query1.first an den anfang der datenbank.
    die while schleife sagt, er soll nachfolgende befehle so lange ausführen bis er am ende der datenbank ist.
    EOF bedeutet End Of File(das ende der Datenbank).

    Die zeile if query1matchode.value = 'Lemcke' then exit; prüft ob im feld matchcode der gesuchte wert drin
    steht. <b>Lemcke</b> ist nur ein beispiel, da kommt dein suchwert rein.
    wenn der gesuchte wert gefunden wurde, wird mit dem befehl exit die schleife abgebrochen.
    wenn der gesuchte wert nicht gefunden wurde, geht man mit query1.next zum <b>nächsten</b> Datensatz.
    query1.disableControls koppelt die datenbank von den dbedit-komponenten ab.
    dies beschleunigt das durchlaufen der datenbank.
    query1.enable(d)Controls; verbindet wieder die dbedit-komponenten(dbgrid) mit der datenbank.

    mfg

    marku
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

    Comment


    • #3
      Danke Markus, es hat bestens funktioniert! Das Ausschalten der Controls mit enable bzw. disable ist nicht erforderlich

      Comment


      • #4
        Um einen Datensatz in einer Query zu finden ist es am einfachsten, folgendermaßen vorzugehen:

        Query1.Locate('Nachname', Nachname.Text, [loPartialKey]);

        'Nachname' => ist das Feld, in dem gesucht werden soll,

        Nachname.Text => ist in diesem speziellem Fall ein TEdit-Field, in dem der zu suchende String steht und

        [loPartialKey] => Schlüsselwerte müssen nicht vollständig übereinstimmen. Beispielsweise könnte der String 'HAMMER' sowohl mit 'HAM' als auch mit 'HAMM' gesucht werden.

        Viel Glück beim weiterprogrammieren!

        CU,
        Andreas

        E-Mail: [email protected]

        Comment


        • #5
          Hallo,<br>
          Locate solltest du aber nur bei lokalen File-server-basierten datenbanken wie paradox benutzen.<br>
          Locate macht nämlich beim suchen einen Fetch-all, d.h. alle daten der Tabelle werden erst mal zum Client geschaufelt und dort wird dann gesucht...<br>
          ...Bei einem SQL-Server oder einer Flat-file-datenbank übers netzwerk hängst du dir damit einen haufen netzlast an den hals

          Comment

          Working...
          X