Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Zeichensuche in Textfeld und Zahlenfeld + LIKE Suche

Begonnen von cyberchris, Januar 30, 2013, 12:34:16

⏪ vorheriges - nächstes ⏩

cyberchris

Hallo,

durch eine Optimierung habe ich wieder ein Problem verursacht:-)

In einem Formular habe ich ein Button mit folgendem Code eingebaut:
DoCmd.OpenForm "PM-Erweiterung", , , "SerienNr = [Serien-Nr oder Nennmaß:] or [Nennmaß] = [Serien-Nr oder Nennmaß:] and [Bezeichnung]='" & bezkenn & "'", acReadOnly

Hier soll bei den Spalten Seriennummer oder Nennmaß gemäß Eingabe gefiltert werden. Hatte bisher auch funktioniert, bis ich den Feldtyp des Felds "Nennmaß" auf Zahl geändert hatte. Hintergrund war die aufsteigende Sortierung nach Zahlen.

Wenn ich nun aber als Suchbegriff Buchstaben eingebe kommt folgende Fehlermeldung:
3071: Dieser Ausdruck wurde falsch eingegeben, oder er ist zu komplex, um ausgewertet zu werden. Beispielsweise kann ein numerischer Ausdruck zu viele komplizierte Elemente enthalten. Vereinfachen Sie den Ausdruck, indem Sie Teile des Ausdrucks Variablen zuweisen.

Beispiel: Suchbebriff einer SN nur aus Zahlen bestehend oder Suchbegriff eines Nennmaßes funktioniert. Nur gibt es auch SN, die auch aus Buchstaben bestehen (Bsp.: "5655E")

Kann man das irgendwie lösen, ohne zwei separate Buttons einzubauen und separat zu arbeiten?

Kann man auch den Befehlt LIKE hier verwenden? So dass auch nur Teile ein Ergebnis liefern?


Danke
gruß Christoph

DF6GL

Hallo,


Du brauchst Dich nicht zu wundern, wenn Du Datentypen so dermaßen vergewaltigst...

Und was ist das für eine "Logik", einer SerienNr und einem Nennmaß die gleiche Bedeutung zuzuschreiben?


Wie auch immer, Du könntest es so machen

a)   den Datentyp von "Nennmaß" wieder in TEXT zurück ändern und die Where-Condition beibehalten. Bei der angesprochenen Sortierung nach Nennmaß benutzt Du die Val()-Funktion zur konvertierung des Textes in eine Zahl.

b)  Sorge für die Konvertierung  von "Nennmaß" in DatenTyp TEXT in der Where-Condition:

"SerienNr = [Serien-Nr oder Nennmaß:] or CStr([Nennmaß]) = [Serien-Nr oder Nennmaß:] and [Bezeichnung]='" & bezkenn & "'"



wenn hier noch ein Ähnlichkeitsvergleich wirken soll, dann etwa so:

"SerienNr like '*' & [Serien-Nr oder Nennmaß:] & '*" or [Nennmaß] like '*' & [Serien-Nr oder Nennmaß:] & '*'   and [Bezeichnung]='" & bezkenn & "'"


wodurch das Ganze noch mehr chaotisch wird...


Unabhängig von der Vermengung der beiden Spalten ist die Benutzung von "Abfrageparametern" in einer Where-Condition in der Openform-Methode (und auch sonst) eher als suboptimal (um nicht Murks zu sagen) einzustufen.


Wenn, dann gehören hier ungebundene Form-Textfelder eingesetzt , in die die Vergleichwerte eingetragen werden und dabei gleich auf bestimmte Plausibilitäten geprüft werden können, sofern es sich um eine Art Suchformular handelt. Wenn kein Suchformular, dann sollten die Vergleichswerte schon in irgendeiner Form in der  DB (in irgendwelchen Tabellen) vorhanden sein.


cyberchris

Hallo,
danke für deine Antwort.

Ich habe mit dem Button eine einfache Möglichkeit gesucht nach einzelnen Teilen zu suchen.

Wie kann ich Val() Funktion anwenden?
Bisher habe ich bei den Formulareigenschaften "Sortiert nach" --> "Nennmaß" stehen.

Gruß Christoph

DF6GL

Hallo,


in der OrderBy-Eigenschaft des Forms ist vermutlich keine Funktion verwendbar.  Als einfachsten und "richtigen" Weg wäre das Umstellen des Datentyps von "Nennmaß" auf Long, bzw. Double zu sehen (und die Sucherei über zwei separate Textfelder zu erledigen).