collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 73
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14129
  • stats Beiträge insgesamt: 68335
  • stats Themen insgesamt: 9204
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Abfrage Kriterien über Formular  (Gelesen 942 mal)

Offline Helen

  • Newbie
  • Beiträge: 4
Abfrage Kriterien über Formular
« am: März 23, 2018, 16:31:12 »
Hi,

ich bin ein bisschen am Verzweifeln und hoffe auf eure Hilfe.
Ich habe ein Abfrage mit verschiedenen Feldern (Nachname, Vorname, ...). Außerdem habe ich ein Formular, in das ich verschiedene Textfelder integriert habe (drop_Nachname, drop_Vorname,...) und die Abfrage ist als Unterformular eingebunden.
In der Abfrage habe ich bei den Kriterien jeweils auf die Formular Textfelder verwiesen ([Formulare]![Suche]![drop_Vorname] oder [Formulare]![Suche]![drop_Vorname] ist Null).
Die Suche funktioniert dann auch super. Wenn ich die Datenbank aber schließe und wieder öffne, fragt er mich nach Parametern für drop_Vorname, drop_Nachname... und selbst wenn ich hier Werte eingebe, funktioniert die Suche nicht mehr.
Hat jemand eine Idee woran es liegen könnte?
Ganz lieben Dank vorab.

Gruß
Helen
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23508
Re: Abfrage Kriterien über Formular
« Antwort #1 am: März 24, 2018, 09:01:56 »
Hallo,


das (Haupt-)Form muss zum Zeitpunkt der Abfrageausführung geladen sein. Das ist  evtl. noch nicht der Fall, wenn das UFO geladen und damit die Abfrage ausgeführt wird.

Insgesamt ist die Verwendung von Referenzen auf Formular-Steuerelemente eher nachteilig und sollte in solcher Umgebung nicht eingesetzt werden.

Bessere Lösung:

Die Kriterien aus der Abfrage entfernen und das UFO-Steuerelement über dessen Eigenschaften "Verknüpfen von/nach" mit den Steuerelementen (hier Kombis) im Hauptform verknüpfen.

Offline Josef P.

  • Access-Profi
  • **
  • Beiträge: 247
    • Code-Bibliothek für Access-Entwickler
Re: Abfrage Kriterien über Formular
« Antwort #2 am: März 24, 2018, 09:37:46 »
Hallo!

Verknüpfen über LinkMasterFields/LinkChildFields wird für "or ControlValue is null" nicht gut laufen.

Ich würde die Filter-Eigenschaft des Formulars (im Unterformular) verwenden. Dafür ist allerdings VBA-Code zum Zusammensetzen des Filterausdrucks erforderlich.

Wenn die aktuelle Variante verwendet werden soll, könnte man das Unterformular erst nach dem Laden des Hauptformulars laden lassen. Dazu im Entwurf die Eigenschaft "Herkunftsobjekt" leeren und als Reaktion auf das Current-Ereignis im Hauptformular füllen. (Anm. ich gehe von einem ungebundenen Hauptformular aus.)

mfg
Josef

Offline Helen

  • Newbie
  • Beiträge: 4
Re: Abfrage Kriterien über Formular
« Antwort #3 am: März 26, 2018, 10:47:46 »
Hi ihr beiden,

vielen Dank für eure Antworten.
Dann würde ich es mal mit der Filter-Eigenschaft des Formulars (im Unterformular) versuchen. VBA kann ich leider nicht selbst schreiben, aber zum Glück gibt es ja Google. Ich habe einen Code gefunden und auf meine Datenbank angepasst. Leider funktioniert es aber noch nicht. Wäre großartig, wenn ihr mir hier nochmal helfen könntet.

Unterformular: G2_SUB
Textfelder im Hauptformular: drop_Nachname / drop_Vorname
Code:

Private Sub drop_Nachname_AfterUpdate()
 filter_ufo
End Sub

Private Sub drop_Vorname_AfterUpdate()
 filter_ufo
End Sub


 Public Sub filter_ufo()
     Dim strFilter As String

     If Not IsNull(Me!drop_Nachname) Then
         strFilter = strFilter & " AND [Nachname] = '" & Me!drop_Nachname & "'"
     End If
     If Not IsNull(Me!drop_Vorname) Then
         strFilter = strFilter & " AND [Vorname] = '" & _
                     Me!drop_Vorname & "'"
     End If
     If Len(strFilter) > 0 Then
         Me!G2_SUB.Form.Filter = Mid(strFilter, 6)
         Me!G2_SUB.Form.FilterOn = True
       Else
         Me!G2_SUB.Form.FilterOn = False
     End If
 End Sub


Ich glaube es liegt an dieser Zeile:
Me!G2_SUB.Form.Filter = Mid(strFilter, 6)
Für was steht die 6? Die muss ich wahrscheinlich auch noch auf meine Datenbank anpassen, oder?
Ich hoffe ich bin nicht total auf dem Holzweg...

Lieben Dank vorab für eure Hilfe
Gruß
Helen




 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7496
Re: Abfrage Kriterien über Formular
« Antwort #4 am: März 26, 2018, 10:56:33 »
Hallo,
Für was steht die 6? Stelle den Cursor auf Mid und drücke F1.
Die Hilfe zu Access VBA sollte man nicht unterschätzen, die ist deutlich besser als ihr Ruf. Es ist die 1.Anlaufstelle wenn man was nicht versteht.
Gruß
Klaus
 

Offline Helen

  • Newbie
  • Beiträge: 4
Re: Abfrage Kriterien über Formular
« Antwort #5 am: März 26, 2018, 12:24:57 »
Hallo Klaus,

danke für den Hinweis. Kannte ich noch nicht und werde ich jetzt bestimmt häufiger nutzen.
Hab es jetzt hinbekommen. Es lag aber nicht an der Mid Funktion. Ein Feld war falsch benannt und den Unterstrich habe ich entfernt.

Mit der Mid Funktion habe ich mich dennoch auseinander gesetzt und auch verstanden was sie macht, aber ich verstehe nicht ganz was sie in Zusammenhang mit dem Code tut. Kann mir das noch jemand erklären? Will ja dazu lernen für die Zukunft :).

Lieben Dank.

Gruß
Helen
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1425
Re: Abfrage Kriterien über Formular
« Antwort #6 am: März 26, 2018, 12:42:07 »
Mid(" AND xxxxxxxxxxx", 6) gibt den gesamten Text ab dem 6. Zeichen aus und "xxxxxxxxxxx" bleibt über - schneidet also die ersten 5 Zeichen vom Anfang " AND " weg, die ja am Anfang eines Kriterium zu einem ungültigen Ausdrück führen würden.
Grüße von der (⌒▽⌒)
 

Offline Helen

  • Newbie
  • Beiträge: 4
Re: Abfrage Kriterien über Formular
« Antwort #7 am: März 26, 2018, 13:48:15 »
Ahhh, ok. Danke dir. :)
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7496
Re: Abfrage Kriterien über Formular
« Antwort #8 am: März 26, 2018, 19:04:45 »
Hallo,
noch ein Tipp zur Selbsthilfe. FRüge mal 2 Debug.Print Zeilen ein und ein Stop Befehl.
.
.
       If Len(strFilter) > 0 Then
         Debug.Print strFilter
         Me!G2_SUB.Form.Filter = Mid(strFilter, 6)
         Me!G2_SUB.Form.FilterOn = True
         Debug.Print Me!G2_SUB.Form.Filter
         Stop
       Else
.
.
Der Code hält dann in der Ausführung an und Du siehst im Direktfenster (ggf. mit Strg+G einblenden) die Auswirkung des Mid Befehls.
Die 3 Zeilen dann natürlich wieder löschen.
Gruß
Klaus
 

 

Datensatzzähler in einer Abfrage

Begonnen von peterBoard Tabelle/Abfrage

Antworten: 6
Aufrufe: 13864
Letzter Beitrag Juni 16, 2010, 16:32:34
von cyorps
Abfrage für Terminüberschneidungen und visuelle Darstellung

Begonnen von centaurusBoard Tabelle/Abfrage

Antworten: 3
Aufrufe: 6379
Letzter Beitrag Januar 21, 2011, 21:30:14
von cy_one_1
Datenerfassung mit Abfrage

Begonnen von Daniel-GSBoard Tabelle/Abfrage

Antworten: 2
Aufrufe: 5539
Letzter Beitrag Mai 05, 2010, 22:52:18
von oma
SQL Abfrage DELETE rückgängig machen??

Begonnen von hmfmartinBoard Tabelle/Abfrage

Antworten: 1
Aufrufe: 7326
Letzter Beitrag Mai 08, 2010, 19:18:08
von MzKlMu
6 Mio Datensätze bei Abfrage

Begonnen von JohannaBoard Tabelle/Abfrage

Antworten: 11
Aufrufe: 8885
Letzter Beitrag Mai 19, 2010, 12:29:47
von Wurliwurm