PDA

Vollständige Version anzeigen : Problem mit leeren Feldern bei Wildcard Suche


MarkX
08.08.2001, 14:55
Wo fang ich an...

Ich habe mir ein Suchformular zur Globalen Suche über alle z.B. Kunden gestrickt.

im Formularkopf stehen ungebundene Felder zum Eintrag des gesuchten Begriffes mit dem Standartwert "*". Dadurch "sollen" alle Datensätze der hinterlegten Abfrage angezeigt werden. Nach Aktualisierung des Suchfeldes wird der Inhalt durch einen Stern ergänzt, um so auch Teilwerte zu suchen. Z.B. "Cla*" findet auch "Clasen". Mit Me.Requery wird die Suche vollendet. Soweit so gut.

Dies funktioniert, solange der zurückgegebene Datensatz der Abfrage kein leeres Feld beinhaltet. Dann wird gleich der gesamte Staz nicht angezeigt.

Klar könnte man das Ganze umgehen, wenn man als 2. Kriterium "Null" angibt, wodurch jedoch zusätzlich zum gesuchten Wert alle Datensätze angezeigt werden, die z.B. keine Telefonnummer beinhalten.

Problem verstanden? :-)

Jemand ´ne Idee zur Lösung?

mikeboy
08.08.2001, 18:59
HI Markx,

ich habe in der Tat ein ähnliches Problem, und zwar wenn ich in meinem Suchformular in ein bestimmtes Feld, welches unter 3000 Datensätzen nur einmal belegt ist, den "*" einsetze, so legt es mir mein ganzes Formular lahm und ich kann in keinem einzigen Feld mehr suchen !!
Meine Tabelle ist als txt verknüpft, aber das dürfte nicht der Grund sein.
Ich kann Dir leider auch nicht helfen, nur Dein Leid teilen.

Vielleicht weiß jemand mehr !?

Gruß Mike

kama
08.08.2001, 19:10
Hier noch eine Möglichkeit,
Handelt es sich bei den Feldern deiner Abfrage eventuell um berechnetet Felder.
Dann könnte es daran liegen das du mit leeren Feldinhalten (nicht 0, Obwohl division durch 0 auch nicht geht, aber zumindest eien Fehlermelung erzeugt) rechnest und das ergibt immer Leere Felder. Denn..
5X Nix is NIX ;)

MarkX
09.08.2001, 08:57
Hallo Mike,

die txt Tabellenverknüpfung kann ich im Moment nicht nachvollziehen, sprich was Du da gemacht hast...aber vielleicht finden wir ja gemeinsam eine Lösung...Suchformulare werden ja oft angefragt...

Hallo auch kama,

nun, berechnete Felder sind auch nicht vorhanden...es handelt sich um normale Textfelder. Das Problem bemerkte ich, als bei privat Kunden kein Firmenname eingetragen wurde. Ich versuch noch mal etwas besser den derzeitigen Aufbau darzustellen...

Im Kopf meines Suchformulares befinden sich 7 ungebundene Textfelder mit dem Standartwert "*". Im Detailbereich die dazugehörigen Steuerelemte aus der Abfrage...

Nach Änderung eines der Textfelder wird automatisch der Inhalt ergänzt durch ein "*" und das Formular neu geladen, so daß auch Teilwerte im Suchergebnis des Detailbereiches angezeigt werden.

Ist nun bei einem Datensatz ein Feld "Null" wird dieser Datensatz nicht mit angezeigt, da die Wildcard "*" offentsichtlich keine Nullfelder berücksichtigt.

Trage ich in der Abfrage zum entsprechenden Feld zusätzlich als Kriterium - Oder Null - ein, wird der Datensatz bei der Suche berücksichtigt, aber auch sämtliche andere Sätze die Null-Felder enthalten mitangezeigt.

Ansonsten funktioniert das Suchformular prima, sozusagen automatisch mit den sonst anzugebenden Optionen "Und" oder "Oder".

Wenn es hilfreicher ist, kann ich die Datenbank ja mal aufteilen, und die wichtigsten Tabellen und Formulare zur Lösung des Problemes bereitstellen.

Danke und wäre prima wenn jemand weiterhelfen könnte.

Gruß

Birgit Dannenberg
09.08.2001, 09:03
Mal so eine Idee:

kannst Du nicht die NULL-Abfrage nur dann hinzufügen, wenn das Suchfeld mehr als nichts oder * enthält???

Also, wenn feld <> "" und feld <> "*" dann feld = feld & " oder IstNull"

Könnte das ein Ansatz sein???

hth Birgit

MarkX
09.08.2001, 11:08
Hallo Birgit,

nicht das Suchfeld ist das Problem, sondern das Abfragekriterium. Das Suchformular bezieht sich auf eine Abfrage mit dem Kriterium "Wie [MeinFormular]![MeinSuchFeld]" wobei [MeinSuchFeld] immer den Standartwert "*" erhält, sprich bei Änderung des Suchfeldes erfolgt das Setzen des Wertes [MeinSuchFeld] = [MeinSuchFeld] & "*"

Setze ich als Oder-Kriterium "Ist Null" werden die Datensätze mit leeren Feldern immer mit angezeigt. Allerdings habe ich festgestellt, wenn dieses "Ist Null" als Kriterium angegeben wird werden die Datensätze in dessen Feld was steht nicht angezeigt...

Chaos pur im Moment für mich.

Birgit Dannenberg
09.08.2001, 11:13
Oh, da hatte ich wohl einen kleinen Denkfehler!
Nicht bei den 'gefüllten' Suchfeldern, sondern bei den 'leeren' (*) mußt Du die Null-Abfrage hinzufügen.


Gruss Birgit

MarkX
10.08.2001, 10:04
oh man, ähm Birgit..:-)

heute morgen hab ich erst geschnallt was du meinst..:-) habs auch gleich ausprobiert

im abfragekriterium habe ich eingetragen:

Wenn([Formulare]![Start]![Kundsuche Globale Suche].[Formular]![suche_ks_firma]="*";([Kunden].[ks_firma]) Ist Null;([Kunden].[ks_firma]) Wie [Formulare]![Start]![Kundsuche Globale Suche].[Formular]![suche_ks_firma])

Aber es funzt leider nicht....

Birgit Dannenberg
10.08.2001, 14:46
Ich fürchte, so geht es nicht.

Kannst Du nicht dafür sorgen, dass die Suchfelder keine Nullwerte enthalten dürfen???

Über die Feldeigenschaften in der Tabelle müßte man dann sicherstellen können, dass dies auch bei Neueingaben berücksichtigt wird.

Andernfalls müßtest Du den SQL-String selbst zusammenbasteln und als Datenherkunft an das Formular binden. Das wäre doch vielleicht noch einen Versuch wert!

Gruß Birgit

MarkX
10.08.2001, 15:03
Also an die Sache mit dem unterbinden von Nullfeldern hab ich auch schon gedacht, denn die im Suchformular gelisteten Felder sind eigentlich die "elementarsten" für eine vernünftige Verwaltung. Aber nachdem ich mit nem daU gesprochen habe, ist es natürlich auch richtig dass man den Kunden anlegen können sollte, wenn man noch nciht alle Daten hat.

Also ich mach es erstmal so und setz Standartwerte damit die Felder nicht Null sind. Wenn einer die Inhalte löscht, schmeiss ich direkt wieder welche rein..;-)

Danke und schönes Wochenende Euch

Macht auch mal Pause..:-)

Birgit Dannenberg
10.08.2001, 15:10
Heureka! - Ich hab's!!

Schreib folgendes in die Feldzeile:
feldname: NZ(tabelle.feldname)

Dann wird aus NULL ein Leerstring und * findet auch diese Sätze.

Birgit

P.S. Dank an Stema!!!

MarkX
10.08.2001, 15:19
Ups,

nicht so schnell Liebes....:-)

wo genau soll ich das hinschreiben?

Danke MarkX

Birgit Dannenberg
10.08.2001, 15:23
Ich habe Dich so verstanden, dass Du eine vorgefertigte Abfrage verwendest. Da hast Du in der Entwurfsansicht die Zeile 'Feld:'. Da schreibst Du nun nicht einfach den Feldnamen hinein, sondern den Ausdruck. Klaro??

Birgit

MarkX
10.08.2001, 15:41
Hallo Birgit,

ok, ich habs und Du hast nen riesen Bussi verdiehnt....:-)))

Danke für die Lösung des Problemes.

Vielleicht hilft dieses Thema ja auch anderen weiter ein eigentlich simples aber bestens funktionierendes Suchformular zu generieren.

Schönes Wochenende