Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Suchen nach Datensätzen über Formular

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe eine Adresstabelle u.a. mit folgenden Feldern:

Vorname, Nachname, Firma

Über ein Formular soll der Benutzer nach Datensätzen in der entsprechden Tabelle suchen können. Dazu soll er ein beliebiges Textfeld ausfüllen. Nach Klick auf einen Button "Suchen" soll dann die Tabelle durchsucht werden und das Ergebnis angezeigt werden.

Was muss man dazu als "Ereignis" hinter den Such-Button legen ? Wie löst man das am besten ?

Ich gehe mal von Access aus... ich habe das in einer alten Datenbank mal so gelöst (ein Glück das ich die noch habe...)

Function DatenSuche() As Variant

' Suchfunktion

' ============

' Aus dem Suchformular wird der Suchtext und die Suchoptionen ausgelesen.

' Je nach gewählter Suchoption wird der SQL SELECT aufgebaut.

' Die Tabelle suche_temp (temporäre Tabelle für Suche) wird zuerst geleert

' (DELETE FROM) und danach durch den passenden SQL SELECT wieder mit Daten

' gefüllt.

' Zum Abschluss wird diese Tabelle geöffnet und dem User angezeigt.

' Variablen

Dim rec

Dim db As Database

Dim sql As String

Dim suchtext As String

' Verweis auf aktuelle Datenbank

Set db = CurrentDb

' Suchtext aus Formular

suchtext = Forms!Suche!suchtext

' Fehlerabfang

If Trim(suchtext) = "" Then

MsgBox ("Fehler:" & Chr(13) & "Kein Suchtext eingegeben")

Exit Function

End If

If (Forms!Suche!chk_datnam = 0) And (Forms!Suche!chk_beschr = 0) Then

MsgBox ("Fehler:" & Chr(13) & "Keine Suchoptionen angegeben")

Exit Function

End If

' Suchoptionen

If (Forms!Suche!chk_datnam <> 0) And (Forms!Suche!chk_beschr <> 0) Then

sql = "INSERT INTO suche_temp SELECT * FROM vorlagen WHERE dateiname LIKE " & _

"'*" & suchtext & "*' OR beschreibung LIKE '" & suchtext & "'"

ElseIf (Forms!Suche!chk_datnam <> 0) Then

sql = "INSERT INTO suche_temp SELECT * FROM vorlagen WHERE dateiname LIKE '*" & suchtext & "*'"

ElseIf (Forms!Suche!chk_beschr <> 0) Then

sql = "INSERT INTO suche_temp SELECT * FROM vorlagen WHERE beschreibung LIKE '*" & suchtext & "*'"

End If

db.Execute ("DELETE FROM suche_temp") ' Tabelle leeren

db.Execute sql ' Tabelle neu füllen

' Ergebniss anzeigen

DoCmd.OpenTable ("suche_temp")

End Function

Das ganze in ein VB-Modul in Access schreiben und als Ereignis für den Suchen-Button "AusführenCode()" und dann den Funktionsnamen.

suche_temp = Temp. Tabelle für Ergebnisse

Forms!Suche = Formular mit den Suchfeldern

chk_datnam & chk_beschr = Checkboxen für Suchoptionen

suchtext = Textfeld im Formular der den Suchstring enthält

  • Autor

Danke für deinen Tip. Das ist ja richtig kompliziert. :eek:

Habe noch ein paar Fragen:

Wofür stehen die Felder "dateiname", "beschreibung", "vorlagen" in den Select-Anweisungen ?

Entspricht das bei mir den Feldern Vorname, Nachname und Firma ?

Sorry für die Fragen, aber von VBA habe ich 0 Ahnung....:OD

Jo, das sind die Felder aus der Tabelle.

Das ganze sollte auch einfacher mit einer "normalen" Access-Abfrage gehen, aber da fragst du besser jemand anders, ich benutze eigentlich nur VBA für sowas...

Hi, user103109!

Du kannst auch ohne VBA folgendes ausprobieren:

In deiner (Ausgabe-)Abfrage schreibst Du in die Kriterienzeile folgendes:

=forms!<DeinFormularname>!<DeinFormularfeld>

(Spitze Klammern nicht mit eingeben und die Texte (Dein...) durch Deine Bezeichnungen ersetzen!)

Diese Abfrage kannst Du ja als Datenherkunft für ein Formular hinterlegen, welches auf Knopfdruck geöfnet wird.

Ein Vorteil: Du läßt Dir die Originaldaten anzeigen (und keine Kopie) und kannst somit auch gleich Änderungen vornehmen (lassen).

[Edit]

In Deinem Such-Formular erstellt Du dann die Schlatfläche am besten mit dem Assistenten: Zauberstab hell (eingedrückt / aktiviert). Dan kannst Du ganz einfach in der Kategorie "Formularoperationen" und anschließend aus den Aktionen "Formular öffnen" auswählen. Der Rest ist ganz einfach!!

[Edit Ende]

  • Autor

Hallo,

ich habe es jetzt über Abfragen gelöst. Habe verschiedene Buttons angelegt (Suche nach Vorname, nach Nachname etc). Daraufhin öffnet sich ein PopUp und man kann eine Eingabe tätigen. Das Ergebnis wird in einem separaten Formular angezeigt. Als "Datenherkunft" habe ich dann die Abfragen genommen.

Ein kleines Prob. habe ich noch: Wenn der Nutzer im Popup Fenster auf "Abbrechen" klickt, kommt eine Fehlermeldung: "Die Aktion OpenForm wurde abgebrochen". So sieht das Ereignis aus, was das Formular mit dem PopUp öffnet:

Private Sub Befehl35_Click()

DoCmd.OpenForm "Nachname"

Wie fange ich Fehlermeldung ab ? Wenn er auf "Abbrechen" klickt, soll er das Formular Nachname schließen...

Ich würd es ad hoc in etwa so machen:

Private Sub Befehl0_Click()

Dim EingabeString As Variant

DoCmd.OpenForm "Nachname"

EingabeString = InputBox("Eingabe machen", Eingabe)

If EingabeString = vbCancel Then

GoTo ende

Else

-->dein Code um EingabeString zu verarbeiten

MsgBox "Es wurde " & EingabeString & " eingegeben", vbOKOnly

End If

ende:

MsgBox "Aktion abgebrochen", vbOKOnly

DoCmd.CloseForm "Naname"

End Sub

Das ist natürlich die raw&dirty Methode, da der Datentyp Variant nich gerade optimal ist, aber es sollte funktionieren.

Grüsse,

Thomas

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.