user103109 Geschrieben 8. September 2003 Teilen Geschrieben 8. September 2003 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 ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
EvilNick Geschrieben 8. September 2003 Teilen Geschrieben 8. September 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
user103109 Geschrieben 8. September 2003 Autor Teilen Geschrieben 8. September 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
EvilNick Geschrieben 8. September 2003 Teilen Geschrieben 8. September 2003 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
piomode1 Geschrieben 10. September 2003 Teilen Geschrieben 10. September 2003 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
user103109 Geschrieben 10. September 2003 Autor Teilen Geschrieben 10. September 2003 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
npeecee Geschrieben 10. September 2003 Teilen Geschrieben 10. September 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.