Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Problembehandlung von Nullwerten in Abfragen





Frage

Problembehandlung von Nullwerten in Abfragen (Access) Hi, ich brauche dringend eure Hilfe! Ich denke auch, dass es für Fortgeschrittene kein Problem ist, diese Dinge zu lösen: Ich benutze Access2003 und habe aus diversen Tabellen eine schöne, riesige Abfrage erstellt. Nun möchte ich auf dieser Abfrage basierend Parameterabfragen durchführen, diese Parameter (=Kriterien) werden über ein Formular eingegeben, z. B. über Häkchen, Drop-down-Listen oder auch schlichte Eingabe eines Zahlenwertes. Auftrags-Nr Name Firma Stadt Stammkunde usw. (rund 20 Kriterien!) Zum Kern der Sache: Bei jeder Suche wird nach anderen Kriterien gesucht, es bleiben also regelmäßig auch Suchfelder leer. Problem 1: Es soll natürlich immer nur nach den Kriterien gesucht werden, für die auch ein Wert angegeben wurden (also keine Nullwerte). Durch die Verknüpfung des Formulars mit der Kriterienzeile der Abfrage ([Forms.Formular1.Firma]) will Access jedoch leider immer für alle Kriterien eine Eingabe. Problem 2: Leider ist die angesprochene riesige Abfrage sehr lückenhaft, und so kann es sein, dass 6 von insgesamt 7 Kriterien passen, und die 7. nur deshalb nicht passt, weil in der lückenhaften Abfrage ein Nullwert (fehlerhafte Information) in diesem Feld ist. Doch in solchen Fällen hätte ich den Datensatz halt trotzdem gern in meinen Ergebnissen. Vielleicht hat jemand einen sponanen Einfall zu diesem Problem ... wäre sehr dankbar! Inge

Antwort 1 von Teddy7

Hallo Inge !
Wie wird denn das Suchergebnis dargestellt ?
Üblicherweise hat man auf dem Selektionsformular einen Button, mit dem man ein Übersichts-(Endlos)Formular oder einen Bericht öffnet.

Beim Öffnen-Befehl dieses Formulars/Berichts kann man Selektionskriterien mitgeben, die dann automatisch die Treffer einschränken (dazu dürfen natürlich in der Datenquelle des Endlosformulars oser Berichts KEINE Referenzen auf Formularfelder vorhanden sein.

Die Selektionskriterien kann man mit einfachen VBA-Befehlen zusammenstellen - das ganze sieht dann aus wie eiine where-Klausel (ohne where).
Heißen z.B. die Felder auf dem Selektionsformular SPLZ und SOrt dann kann das so aussehen:

Private Sub cmdBericht1_Click()
Dim suche As String
Dim suche1 As String
Dim suche2 As String
Dim zusatz As String
suche = ""
zusatz = ""
suche1 = " "
If nz(SPLZ,0) <> 0 Then
suche1 = "[PLZ]=" & SPLZ
Else
suche1 = " "
End If
If suche1 <> " " Then
suche = suche1
zusatz = " and "
End If

If nz(SOrt,"") <> "" Then
suche1 = "[Ort] like ´" & SOrt & "´"
Else
suche1 = " "
End If
If suche1 <> " " Then
suche = suche1
zusatz = " and "
End If

DoCmd.OpenReport "repÜbersicht", acViewPreview, , suche
End Sub

(die Like-Abfrage, wenn man auch Neu* eingeben können will - sonst = verwenden. Auf jeden Fall bei Textfeldern die Werte in Hochkomma setzen s.o.)
PLZ und Ort sind hier die Feldnamen in der Datenquelle des Berichts.

Gruß
Teddy

Antwort 2 von Ing-e-db

Super! Danke Dir, ich probiers gleich aus, das könnte ich mit meinen begrenztem Wissen evtl. noch hinbekommen :-D