Home » Software » Softwareentwicklung » VBA » VBA Access - Zu einem bestimmten Datensatz springen
- Anzeige -
Software Asset Management beim Fachmann

VBA Access - Zu einem bestimmten Datensatz springen

Variante 1: DoCmd.FindRecord (Datensatz suchen)

Variante 2: Volltextsuche

Eine Volltextsuche lässt sich realisieren, indem man jeden Datensatz durchläuft und via InStr nach dem Suchstring sucht.

Variante 1

'Suchen nach String S_Ident
DoCmd.FindRecord S_Ident, acEntire, False, acDown, False, , True

Variante 2

'Variante 2
Sub SearchMain(SearchString As String)
Dim MainDB As DAO.Database
Dim MainRC As DAO.Recordset
Dim Bstr1 As Boolean
Bstr1 = False

Set MainDB = OpenDatabase(GetDB)
Set MainRC = MainDB.OpenRecordset("TblKundeHaupt")

MainRC.MoveFirst
DoCmd.Hourglass True
While Not MainRC.EOF
   '-----------------------------------------
   'Äussere Suchschleife Volltextsuche Anfang
   '-----------------------------------------

   If InStr(1, GetField(MainRC, "SFirma"), SearchString) > 0 Then
      Bstr1 = True
   End If
   If InStr(1, GetField(MainRC, "SFirmaFrüher"), SearchString) > 0 Then
      Bstr1 = True
   End If
   If InStr(1, GetField(MainRC, "SAdresse"), SearchString) > 0 Then
      Bstr1 = True
   End If
   If InStr(1, GetField(MainRC, "SPLZ"), SearchString) > 0 Then
      Bstr1 = True
   End If
   If InStr(1, GetField(MainRC, "SOrt"), SearchString) > 0 Then
      Bstr1 = True
   End If

MainRC.MoveNext
Wend
If Bstr1 = True Then
  MsgBox "Gefunden"
End IF
MainRC.Close
MainDB.Close
End Sub

Referenz DoCmd.FindRecord

DoCmd.FindRecord Suchen nach[, Vergleichen][, Groß-/Kleinschreibung][, Suchen][, Wie formatiert][, Nur aktuelles Feld][, Am Anfang beginnen]

Die Methode FindRecord verwendet die folgenden Argumente:

Argument Beschreibung
Suchen nach Enthält die zu suchenden Daten.
Vergleichen Eine der folgenden eingebauten Konstanten:
  acAnywhere (Suchen im ganzen Feld)
acEntire (Standardwert - Das komplette Feld muss mit Suchstring übereinstimmen)
acStart (Suchstring wird nur am Anfang des Feldes gefunden) 
  Wenn Sie dieses Argument nicht angeben, wird der Standardwert (acEntire) verwendet.
Groß-/Kleinschreibung Verwenden Sie True (-1), um bei der Suche Groß- und Kleinschreibung zu beachten, und False (0), um Groß- und Kleinschreibung unberücksichtigt zu lassen. Wenn Sie dieses Argument nicht angeben, wird der Standardwert (False) verwendet.
Suchen Eine der folgenden eingebauten Konstanten:
  acDown (sucht abwärts in der Tabelle)
acSearchAll (Standardwert - sucht in der kompletten Tabelle)
acUp (sucht aufwärts in der Tabelle)
  Wenn Sie dieses Argument nicht angeben, wird der Standardwert (acSearchAll) verwendet.
Wie formatiert Verwenden Sie True, um Daten so zu suchen, wie sie formatiert sind, und False, um Daten so zu suchen, wie sie in der Datenbank gespeichert sind. Wenn Sie dieses Argument nicht angeben, wird der Standardwert (False) verwendet.
Nur aktuelles Feld Eine der folgenden eingebauten Konstanten:
  acAll (alle Felder der Tabelle)
acCurrent (Standardwert - Nur aktuelles Feld der Tabelle)
  Wenn Sie dieses Argument nicht angeben, wird der Standardwert (acCurrent) verwendet.
Am Anfang beginnen Verwenden Sie True, um die Suche im ersten Datensatz zu beginnen. Verwenden Sie False, um die Suche im Datensatz zu beginnen, der auf den aktuellen Datensatz folgt. Wenn Sie dieses Argument nicht angeben, wird der Standardwert (True) verwendet.

Fehler: Ein Makro, das einer der Eigenschaften des aktuellen Feldes zugeordnet ist, konnte wegen eines Fehlers in einem Argument der SuchenDatensatz-Aktion (FindRecord) nicht ausgeführt werden.

Lösung:

Sie sind nicht mit DoCmd.GotoControl auf einen Datensatz gegangen 

oder

Stellen Sie im Makrofenster das Argument 'Wie formatiert' auf 'Ja' ein. Soll das Argument auf 'Nein' eingestellt bleiben, müssen Sie die folgenden Schritte ausführen:



War der Artikel hilfreich? Bitte liken und sharen. Danke!

it-zeugs.de ist auch auf Facebook...

Schreibe einen Kommentar - aber kein SPAM - der wird zuverlässig gefiltert!

  • Erforderliche Felder sind markiert mit *.

If you have trouble reading the code, click on the code itself to generate a new random code.
 


Posts: 1
Comment
Suchen und Ausgeben
Reply #2 on : Mon November 28, 2016, 21:09:36
Hallo Sascha
Aus Zeitgründen kann ich in der Regel für ein so konkretes Problem keine Unterstützung liefern. Nur mal ein paar Überlegungen dazu: Was heisst "Nun soll jeder der Bewohner beim Essen gescannt werden"? Ich nehme an, jeder hat irgendwie einen QR-Code, Bar-Code, etc? Dazu gibt es irgendwo eine Bewohner-Tabelle in der Datenbank mit einer eindeutigen Bewohnernummer? Irgendwie muss der Scan-Code mit der Bewohnernummer in Relation stehen. Entweder ist sie gleich, oder es gibt eine Tabelle, in der die Relation abgelegt ist. Dann arbeitest Du mit DoCmd.FindRecord und springst zum jeweiligen Bewohner und bearbeitest den Datensatz nach Deinen Wünschen.

Viele Erfolg und viele Grüsse
Lars
Sascha Schütte
Posts: 1
Comment
Suchen und ausgeben
Reply #1 on : Mon November 28, 2016, 09:18:46
Guten Tag,
ich habe ein Problem, woran ich schon seit Tagen herum teste: ein Formular, gebunden an eine Abfrage zum Bestand von Bewohnern,ist geöffnet(mit Daten wie Name, Geb.,Haus, Zimmer und Foto). Nun soll jeder der Bewohner beim essen gescannt werden und der entsprechende Datensatz im Formular angezeigt werden. Ich verzweifel langsam. Könnten Sie mir eventuell helfen?
LG Sascha