Announcement

Collapse
No announcement yet.

Schnelle Suchliste auch mit Interbase

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

  • Schnelle Suchliste auch mit Interbase

    Hallo,

    aus meinen DBAse-Projekten habe ich eine Suchlistenformular übernommen mit DBGrid und einem Edit-Feld. Im OnChange des Edit habe ich einen Filter für die Tabellen gesetzt, der mit den getippten Anfangsbuchstaben die Liste eingrenzt. Funktionierte JAhrelang gut.<BR>
    Jetzt habe ich auf den Server gewechselt und schicke jetzt im OnChange eine Select mit der Zeile :<BR>
    where Name starting with :Eingabe<br>
    Funktioniert auch. Da der Server langsamer ist als eine lokale Tabelle verschluckt das Editfeld beim schnellen Tippen auch mal einen Buchstaben. Kann ich das abfangen oder gibt es einen schnelleren TAbellenzugriff ?

    Gruß Günter

  • #2
    Serverdatenbank <> Desktopdatenbank

    Normalerweise laufen der Server und der Client auf verschiedenen Computern. Nun stellt sich für mich die Frage ist es Sinnvoll den Netzwerktraffic mit einer sinnlosen Abfrage nach jedem Tastendruck zu belasten?
    Stell dir mal vor 300 Benutzer fangen an in der Tabelle zu suchen?

    Wenn du einen schnellen Zugriff auf IB suchst dann solltest du dir die IBObjects www.ibobjects.com ansehen und die IB_ Komponenten verwenden

    Comment


    • #3
      Hallo,

      der Vorteil ist eine schnelle Kundensuche, die sich in der Praxis seit Jahren bewährt hat. Wir haben im eigenen Betrieb verschiedene Datenbanken (Kunden, Liefer, Externe Anbieter etc.) zum Vergleich und die schnellste Info kommt über die Tabelleneinschränkung . Der Traffic ist ab der zweiten Anfrage vernachlässigbar, da sich die Anzahl der geholten Datensätze mindestens viertelt, meistens jedoch ein zehntel der vorigen Menge ist.<br>
      Das Tempo ist auch mit IBX 4.62 ok, bis auf das Verschlucken im Editfeld.

      Gruß Günte

      Comment


      • #4
        Hallo

        das gleiche Problem hatte ich auch.<br>
        Ich habe folgende Lösung erfolgreich in unserem Unternehmen durchgesetzt:<br>
        Der Anwender gib in ein normales Edit-Feld den zu suchenden Kunden / Artikel ein. <br> Mit Like (SQL) suche ich. Wird nur ein Eintrag gefunden, so ist dieser gültig.<br>
        Wenn mehrere Einträgen gefunden werden, bilde ich diese in einem Grid ab und suche dann mit SearchEdit (Turbopower Orpheus) in dieser Untermenge. <br>
        Es ist natürlich hier möglich mit nur einem Teil des Namens einzusteigen. Dann wird die <br> Ergebnismenge natürlich grösser und es dauert länger. Gib ich nichts ein, erhalte ich alle Einträge.<br>
        Wenn man in der ersten Query nur die für die Anzeige im Grid relevanten Daten auswählt und den <br>
        kpl. Satz nach der Auswahl in einer separaten Query holt, wird es noch schneller.<br>
        Diese Lösung wurde schon nach wenigen Tagen als sehr angenehm bewertet.

        Gruß Hors

        Comment


        • #5
          Warum setzt du nicht z.B. mit der Ersten Datenmenge (count select <> count all und bof<>eof) ein ClientDataset ein (z.B. nur ID und relsuchfelder) anhand der ID (Jeder Datensatz sollte eindeutig sein) holst du dann den passenden Datensatz zum bearbeiten

          Comment


          • #6
            Hallo,<br>
            das besteht schon so ähnlich. Da wir im Rheinland sind und die Ausprache meiner älteren Kunden unklar ist, habe ich eine Stammdatentabelle angelegt aus ID,Suchname(Name,Vorname),Suchort(Ort,Strasse), so das selbst meine Lehrlinge den richtigen Kunden finden können. Mit der ID hole ich aus der Adresstabelle die restlichen Stammdaten. Selbst bei 10000 Datensätzen ist die Tabelle handlich klein.(< 100 KB). Ich möchte nur dem Editfeld Manieren beibringen

            Comment


            • #7
              Beim SQL-Server brauchst du keine extra Tabelle anlegen, sondern schränkst einfach die select-abfrage ein oder du verwendest eine view.

              Du kannst es ggf. mit einem timer probiern oder nimm nur beim ersten einen select und dann arbeitest du mit locate weiter. T&E

              Ich für meinen Teil frage erst ab wenn der Benutzer mit [Return] das Kommando gibt

              Comment


              • #8
                Mit Return nach Eingabewunsch würde ich auch gerne arbeiten. Das Editfeld reagiert jedoch. Zwei falsche Möglichkeiten : a. Der text ist komplett markiert nach 'activecontrol', b. Der Cursor steht am Anfang vor dem ersten zeichen beim Abfangen des return.<br>
                Wie bekomme ich das Editierfeld dazu, nicht zu reagieren und den Zeichencursor unberührt zu lassen

                Comment

                Working...
                X