PDA

Vollständige Version anzeigen : Bei Listbox-Auswahl "ohne" alle Datensätze anzeigen deren Feldinhalt leer sind


wauwau
22.03.2004, 14:59
Die Feldinhalt "Prioritaet" der Tabelle enthält folgende Werte:
Heiß
A
B
C
in manchen Datensätzen ist das Feld "Prioritaet" leer.

Ich hab in der Listbox die 4 o.g. Anklickmöglichkeiten sowie als 5. "ohne".
Nun möchte ich das wenn "ohne" markiert ist alle Datensätze angezeit werden, bei denen der Feldinhalt "Prioritaet" leer ist

Die Datensatzherkunft für die Listbox: "Heiß";"Heiß";"A";"A";"B";"B";"C";"C";"";"ohne"

Wenn ich "ohne" anwähle werden keine Datensätze angezeigt

Der nochfolgende Code ist auf der hier bekannten "Suchen-DB" aufgebaut

[CODE]<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">If</span> <span class="TOKEN">Not</span> IsNull(Me!Datumvon) <span class="TOKEN">Then</span> Krit = Krit &amp; &quot; AND Datum &gt;= #&quot; &amp; Format(Me!Datumvon, &quot;yyyy-mm-dd&quot;) &amp; &quot;#&quot;
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> IsNull(Me!Datumbis) <span class="TOKEN">Then</span> Krit = Krit &amp; &quot; AND Datum &lt;= #&quot; &amp; Format(Me!Datumbis, &quot;yyyy-mm-dd&quot;) &amp; &quot;#&quot;
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> IsNull(Me!KombiKontakt) <span class="TOKEN">Then</span> Krit = Krit &amp; &quot; AND Kontaktart = '&quot; &amp; Me!KombiKontakt &amp; &quot;'&quot;
<span class="TOKEN">If</span> <span class="TOKEN">Not</span> IsNull(Me!KombiBearbeiter) <span class="TOKEN">Then</span> Krit = Krit &amp; &quot; AND Name = '&quot; &amp; Me!KombiBearbeiter &amp; &quot;'&quot;
&nbsp;
<span class="REM">' End If</span>
Tmp = &quot;&quot;
<span class="TOKEN">For</span> <span class="TOKEN">Each</span> Itm <span class="TOKEN">In</span> Me!lstPrio.ItemsSelected
Tmp = Tmp &amp; &quot;,'&quot; &amp; Me!lstPrio.ItemData(Itm) &amp; &quot;'&quot;
<span class="TOKEN">Next</span> Itm
<span class="TOKEN">If</span> Tmp &lt;&gt; &quot;&quot; <span class="TOKEN">Then</span> Krit = Krit &amp; &quot; AND Prioritaet IN (&quot; &amp; Mid(Tmp, 2) &amp; &quot;)&quot;
SQL = &quot;SELECT * FROM [Abfrage Aktivit&auml;ten] &quot;
&nbsp;
<span class="TOKEN">If</span> Krit &lt;&gt; &quot;&quot; <span class="TOKEN">Then</span>
Krit = Mid(Krit, 5)
SQL = SQL &amp; &quot;WHERE &quot; &amp; Krit
<span class="REM"> 'If Me!KritAnz Then</span>
<span class="REM"> ' GblKrit = Krit</span>
<span class="REM"> 'Else</span>
<span class="REM"> ' GblKrit = &quot;&quot;</span>
<span class="REM"> 'End If</span>
<span class="TOKEN">End</span> <span class="TOKEN">If</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

KHS
22.03.2004, 15:11
'...
If Me!lstPrio = "ohne" Then
Krit = " AND Prioritaet Is Null"
Else
'...

wauwau
22.03.2004, 17:04
An welcher Stelle soll denn der Code eingefügt werden???

Danke für deine Rückantwort!

KHS
23.03.2004, 08:47
Es gestaltet sich doch ein wenig umfangreicher:
'...
Tmp = ""
If Me!lstPrio.Column(0) = "ohne" Then
Krit = " AND Prioritaet Is Null"
Else
For Each Itm In Me!lstPrio.ItemsSelected
Tmp = Tmp & ",'" & Me!lstPrio.ItemData(Itm) & "'"
Next Itm
If Tmp <> "" Then Krit = Krit & " AND Prioritaet IN (" & Mid(Tmp, 2) & ")"
End If
'...

Und das Listenfeld muss beim Aufheben der Kriterien nicht nur deselektiert, sondern auch noch auf Null gesetzt werden:
Me!lstPrio = Null
Bzw., wenn du das nach Reinhards Muster per Schleife machst:
'...
Ctl = Null '<- Das kommt dazu
For Each Itm In Ctl.ItemsSelected
Ctl.Selected(Itm) = False
Next Itm
'...