# Access Suchmaske filtert leere Spalten



## artinfo (28. Juni 2004)

*Access Suchmaske filtert ungewollt leere Spalten*

Hallo,

gestern habe ich anhand des Tutorials "Access Suchmaske" eine ebensolche angelegt und möchte diese nun um mehrere Suchfelder erweitern. Da jedoch einige Felder in den Spalten leer sind, werden diese Datensätze bereits nach Erstellen der SQL-Anweisung ausgefiltert. Wie muss ich die Gleichung:

Wie „*“ & [Formulare]![frmAdressen]![txtSuchfeld] & „*“ 

ändern, damit auch leere Datensätze (-felder) angezeigt werden?

Bin für jede Hilfe Dankbar.
MfG
artinfo


----------



## Penguin-tut (15. Mai 2007)

Genau das Problem habe ich auch ! Kann denn keiner helfen ?


----------



## larryson (16. Mai 2007)

Also leere Spalten sprechen nicht gerade von einem sauberen Datenbankaufbau....

Bezieht sich das Formular auf eine Tabelle oder eine Abfrage? Oder noch besser, postet doch bitte mal eine kurze Beispieltabelle und mit (leeren) Beispieldaten und die Spalten, nach denen du/ihr filtern wollt.


----------



## Penguin-tut (21. Mai 2007)

Es bezieht sich auf Formular. Habe die Datenbank mal angehängt. Es sind ca. 10 
Datensätze vorhanden aber es werden bei der Suche (Fernglassymbol der einzelnen
Buchungsmaschinen) nur 3 angezeigt, da die anderen leere Datensätzte enthalten.


----------



## larryson (21. Mai 2007)

Erledigt über die NZ Funktion. 

Allerdings solltest Du gerade was den Datenbankaufbau betrifft noch mal überlegen, ob du die Tabellen wirklich so lassen willst.

Die Datensätze wurde nicht angezeigt, weil z.B. ein Leerzeichen eingegeben worden ist, man sieht es nicht, das Feld ist aber auch nicht leer.

PS: Unter Extras-Optionen gibt es den Reiter Allgemein; dort "Beim Schliessen komprimieren" anklicken, das hält die DB schlank.


----------



## Penguin-tut (22. Mai 2007)

Super ! Vielen Dank !
Habe gerade mal in meinem Buch nachgesehen. Die NZ() Funktion wandelt
Null-Werte in den Wert 0 oder in andere festgelegte Werte um, richtig ?


----------



## larryson (22. Mai 2007)

Korrekt gelesen. Und immer wieder mal nützlich.Die NZ-Funktion und so ein Access Buch. 
(Ich hab zwei!)


----------



## skirocco (31. März 2010)

Hallo zusammen,
Sorry das ich das Thema noch einmal aufgreife.
Seit einiger Zeit beschäftige ich mich intensiver mit Access und bin mittlerweile auf das gleiche Problem gestoßen, wie es in diesem Forum schon behandelt wurde.
Leider brachten mich die Lösungsansätze bis jetzt nicht weiter.

Zu meinem Problem
Ich habe anhand des Tutorials "Suchmaske für Access-Datenbank" eine Suchmaske erstellt. Funktioniert super. Danke für die Anleitung.
Mein Formular habe ich um weitere Suchfelder ergänzt. 
Leider bekomme ich nicht alle Datensätze der Datenbank angezeigt, weil das letzte Suchfeld auf eine Spalte bezieht, die nicht bei jedem Datensatz mit Inhalt gefüllt ist.
Bei der Datenbank handelt es sich um eine Mitgliederliste.
Die oben genannte Spalte enthält einen Gruppennamen, jedoch gibt es auch Mitglieder die nicht in einer Gruppe sind.

In meiner Suchmaske werden diese Mitglieder jedoch nicht angezeigt, da sie keiner Gruppe angehören. Ich hätte gerne, dass diese Mitglieder auch im Listenfeld angezeigt werden.

Kleine Info zur meiner Suchmaske.
Ich habe 3 Textfelder, über die ich suchen kann (Nachname, Vorname, Gruppe)

Ich hoffe ihr könnt mit meiner Beschreibung des Problems etwas anfangen.
Danke schon mal.


----------



## tombe (1. April 2010)

Na dann gehen wir das Problem doch mal genau so an wie oben, zeig mal deine Abfrage und deinen Tabellenaufbau.

Gruß Thomas


----------



## skirocco (2. April 2010)

Hallo,
habe die Datenbank einmal angehängt. 
Als kleine Info vielleicht noch. In dem Anhang befinden sich 2 Datenbanken. Es geht jedoch um die Datenbank zeltlager.mdb. Diese Datenbank bekommt die Hauptdatensätze, wie Nachname, Vorname etc. aus der Datenbank im Unterordner.
Ich arbeite jedoch mit der zeltlager.mdb, die andere Datenbank wird von meinem Systemadministrator gepflegt, die ich jedoch nicht anrühren möchte.
Ich möchte lediglich die Stammdaten in meiner Datenbank verwenden. Habe ich über eine Verknüpfung relisiert.

Für die Fehlerdiagnose im Forum, habe ich die eigentlich Stammdaten, durch Musterdaten, auf Grund des Datenschutzes der einzelnen Mitglieder, ersetzt. An der Struktur habe ich jedoch nichts verändert.

Ich hoffe, ich habe meinen Datenbankaufbau genau genug beschrieben.
Danke schon mal.

Beste Grüße
Thorben


----------



## tombe (6. April 2010)

Hi Thorben,

also die "zeitlager.mdb" kann ich leider nicht öffnen. Liegt vermutlich daran das ich hier noch mit Access 2000 arbeite und du schon eine neuere Version hast, die "kolping.mdb" dagegen lässt sich öffnen.

Habe hier ein Formular mit 3 ungebundenen Textfeldern und einem Button erstellt. In der Click-Prozedur des Buttons kommt folgender Code:


```
Private Sub cbSuchen_Click()
Dim sql$
Dim und$

If Trim(txtVorname) = "" And Trim(txtNachname) = "" And Trim(txtGruppe) = "" Then
    MsgBox "Ohne Angaben ist keine Suche möglich.", vbOKOnly, "Suche"
End If

sql$ = "SELECT * FROM KFH_3_94 WHERE "

If Trim(txtNachname) <> "" Then
    sql$ = sql$ & "Nachname = " & txtNachname
    und$ = " AND "
End If

If Trim(txtVorname) <> "" Then
    sql$ = sql$ & und$ & "Vorname = " & txtVorname
    und$ = " AND "
End If

If Trim(txtGruppe) <> "" Then
    sql$ = sql$ & und$ & "Gruppe = " & txtGruppe
End If

End Sub
```

Je nachdem in welchen Feldern ein Wert erfast wurde, wir die entsprechende SQL-Anweisung erstellt. Das solltest du so auf deine Datenbank ohne Probleme übertragen können!!?

Gruß Thomas


----------



## skirocco (6. April 2010)

Hallo Thomas,
danke für die schnelle Hilfe. Leider konnte dein VBA-Code keine Abhilfe schaffen. Habe den VBA-Code bei mir eingefügt, leider ohne Erfolg.
Auch die nötige Anpassung an die Datenbank Zeltlager brachte keinen Erfolg.

Ich habe die beiden Datenbanken noch einmal hoch geladen, jedoch als 2000er-Version.
Wäre dir sehr dankbar, wenn du noch einmal drüber schauen kannst. (Dein VBA-Code ist noch nicht eingefügt)

Beste Grüße und Vielen Dank
Thorben


----------



## tombe (7. April 2010)

Hi Thorben,

habe mal ein bisschen was an deiner Datenbank verändert.
Wenn jetzt im Formular bzw. in den entsprechenden Suchfeldern etwas eingegeben und anschließend auf den Suchen Button geklickt wird, dann werden im Formular auch die entsprechenden Datensätze angezeigt.

Da die Tabelle KFH_3_94 eine verknüpfte Tabelle ist, habe ich hierfür eine neue Verknüpfung erstellt. Sonst hätte ich das Formular nicht öffnen können. Musst du bei dir dann wieder ändern!!

Schau es dir einfach an ob du damit klar kommst.

Gruß Thomas


----------



## skirocco (7. April 2010)

Hallo Thomas,
danke für die Hilfe.
Ich habe versucht die VBA-Anweisung zu verstehen. Ich würde mich hier jedoch als Anfänger deklarieren, der schon mal ein wenig mit VBA programmiert hat. 

Gibt die Anweisung "Me.RecordSource = sql$" die gefundenen Datensätze in die entsprechenden Textfelder (Vorname, Nachname, Gruppe) zurück?
Bei der Betätigung des Suchbuttons scheint es mir so, als würde in dem Textfeld Nachname ein Listenfeld entstehen, bzw. eine Textbox mit Scrollbalken.

Mir gefällt dein Vorschlag sehr gut.

Gibt es eine Möglichkeit die gefundenen Datensätze in dem Listenfeld anzuzeigen und dann darüber einer nähere Auswahl zu treffen? 
Die Anzahl der Datensätze stimmt immer im unteren Bereich, z.B. 1 von 2 oder 1 von 4 je nach Suchkriterium.

Danke schon mal.

Beste Grüße

Thorben


----------



## tombe (8. April 2010)

Hi Thorben,

also habe es jetzt so geändert das beim Suchen die Treffer zunächst in das Listenfeld eingetragen werden. Klickt man dann auf einen Eintrag in der Liste, wird dieser Datensatz unten angezeigt.

Den Code von dir habe ich mal noch stehen lassen, jedoch alles auskommentiert. Denke mal du wirst ihn so nicht mehr brauchen!

Gruß Thomas

Ach übrigens:


> Gibt die Anweisung "Me.RecordSource = sql$" die gefundenen Datensätze in die entsprechenden Textfelder (Vorname, Nachname, Gruppe) zurück?


Ja, damit werden die Datensätze zurückgegeben!


----------



## skirocco (9. April 2010)

Hallo Thomas,
Super, das ist genau das, was ich mir von der Suchfunktion vorgestellt habe. Funktioniert.

Ich habe nur im Moment den Eindruck, ein Problem mit deiner Hilfe zu lösen und 2 neue kommen für mich als Anfänger hinzu. 
Hoffe, dass ich das irgendwann selber hinbekomme.
Kannst du mir noch einmal helfen?

Die Suchfunktion und das Listenfeld funktionieren jetzt ja einwandfrei. Leider funktionieren Checkboxen im unteren Bereich nicht mehr. Die Checkboxen sind ja aus der anderen Tabelle.

Im Moment kann ich diese nicht mehr anklicken. Diese Datensätze kann ich auch als Feldlisten-Feld hinzufügen. ALs würde die Beziehung zur zeltlager-Tabelle fehlen.

Habe schon versucht die sql-Anweisung in dem Bereich lis_ergebnis zu ändern und hier die andere Tabelle mit einem Left Join zu verknüpfen, leider vergebens.

Weißt du hier auch noch einen Rat?

Beste Grüße
Thorben


----------



## tombe (11. April 2010)

Hi Thorben,

sorry hat etwas länger gedauert. Bin dieses WE am einem Rechner mit Office 2007 und da musste ich mich erst mal zurechtifnden.


```
Private Sub lis_ergebnis_Click()
Dim sql$

sql$ = "SELECT * FROM KFH_3_94 LEFT JOIN zeltlager2010 ON KFH_3_94.Key = zeltlager2010.Key WHERE KFH_3_94.Key = " & lis_ergebnis.Column(0)
Me.RecordSource = sql$

End Sub
```

Wenn du die Abfrage in der onClick Prozedur der Liste wie oben änderst, müsste das gewünschte Ergebnis herauskommen.

Gruß Thomas


----------



## skirocco (16. April 2010)

Hallo Thomas,
danke für die Hilfe.
War die Woche viel unterwegs, deshalb melde ich mich erst jetzt.
Jetzt funktioniert alles so, wie ich es haben wollte.
Besten Dank und beste Grüße
Thorben

P.S.: Office 2007 ist sehr gewöhnungsbedürtig


----------

