vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Re: 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)

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
suchprogrammierung in acces 20031.246buju03.05.07 14:45
Re: suchprogrammierung in acces 2003904srcdbgr04.05.07 08:10
kleine Einführung zu SHAPE907srcdbgr04.05.07 08:16
Re: suchprogrammierung in acces 2003804buju04.05.07 09:41
Re: suchprogrammierung in acces 2003855srcdbgr04.05.07 11:25

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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