| |

VB & DatenbankenRe: suchprogrammierung in acces 2003 | |  | Autor: srcdbgr | Datum: 04.05.07 11:25 |
| Es gibt mehrere Möglichkeiten, Datensätze in einer Tabelle zu suchen. Die schnellste und ressourcenschonendste Vorgehensweise ist, eine SQL-Abfrage zu erstellen. Mit dem SQL-Kommando erzeugt man dabei eine Abfrage (= Recordset), das alle gesuchten Datensätze enthält.
Betrachten wir das mal für Dein Beispiel mit dem Telefonbuch (und zwar mit der klassichen Suche).
Dein Suchkriterium ist bspw. der Nachname. In einem Formular gibt der Benutzer in ein Textfeld den Namen "Meier" ein und klickt auf einen Button "Suchen". Der Klick auf den Button löst das Ereignis button_click aus. In der zugehörigen Prozedur könnte dann bspw. folgende Programmlogik ablaufen:
SQL-String erstellen'Deklarationen
Dim meinSqlString As String
meinSqlString = "SELECT * FROM meineTelefonbuchTabelle WHERE meinFeldNachname=" _
& meinTextfeld.Text Mit diesem String erstellt Dein Code dann ein Recordset. Das Recordset enthält dann alle Meiers ... und nur die Meiers! In Deiner Ergebnisanzeige zeigst Du dann die Datensätze dieses Recordsets an.
Wenn Du jetzt Deine Suche etwas "schlauer" machen willst, dann bietest Du dem Benutzer auch noch die Möglichkeit an, sog. Wildcards zu verwenden. Das sind meistens solche Zeichen wie * und ?, wobei ? als Platzhalter für ein einzelnes beliebiges Zeichen und * für mehrere beliebige Zeichen steht.
Bsp.:
"Me?er" soll alle Meiers und alle Meyers finden.
"M*er" soll alle Meiers, Meyers, Maiers und Mayers (und auch Müllers, etc.) finden.
Um so ein Suche zu realisieren, kannst Du SQL LIKE verwenden.
Wenn Dein Benutzer mehrere Begriffe eingeben darf, die z.B. per Komma getrennt sein sollen, dann verwendest Du SQL IN.
In allen Fällen erhälst Du immer ein Recordset, das die gesuchten Datensätze in Abhängigkeit der vom Benutzer gemachten Eingaben enthält.
SHAPE geht hier noch ein Stück weiter.
Nehmen wir an, Du hast eine Kopftabelle mit Kundendaten und eine Detailtabelle mit Rechnungsdaten. In der Kopftabelle gibt es eine Kundennummer, in der Detailtabelle gibt es eine Kundennummer und eine Rechnungsnummer. In der Kopftabelle kommt ein Kunde nur genau einmal vor, in der Detailtabelle kann er n-mal vorkommen. Über die Kundennummer kannst Du also eine 1:n-Beziehung zwischen den Tabelle herstellen. Du hast also eine hierarchische Abhängigkeit zwischen den Tabellen.
Diese Hierachie nutzt SHAPE und fügt Kopf- und Detaildaten in einem einzigen Recordset zusammen. Der Link in meinem zweiten Post "kleine Einführung zu SHAPE" erklärt, was SHAPE da genau macht.
Mit SQL-Statements kannst Du alle (ich meine wirklich alle!) Suchanforderungen realisieren. Schau Dir dazu die Links zu dem SQL-Tutorial in meinem ersten Post an.
Zum Abschluss:
Auch der vorgefertigte Suchen-Button in Access verwendet im Hintergund die hier kurz angerissene Technik
Gruß,
Michael
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. (Brian W. Kernighan) |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevISDN 1.0 
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCoolbar 3.0 
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|