Neuigkeiten:

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

Mobiles Hauptmenü

Where Condition mit Abfragefenster

Begonnen von cyberchris, Dezember 21, 2014, 07:08:29

⏪ vorheriges - nächstes ⏩

cyberchris

Guten Morgen,

ich habe ein Problem mit einem VBA-Code, der eigentlich mal funktioniert hatte:
(dachte ich zumindest)

DoCmd.OpenForm "PM-Erweiterung", , , "SerienNr = [Serien-Nr oder Nennmaß:] or CStr([Nennmaß]) = [Serien-Nr oder Nennmaß:] and [Bezeichnung]='" & bezkenn & "'", acReadOnly

--> Es soll ein Abfragefenster aufgehen und man kann dann entweder eine Seriennummer oder Nennmaß eingeben (bsp. "20"). Anschließend soll das Form "PM-Erweituerng" geöffnet werde und das Ergebnis angezeigt werden (Übereinstimmung bei SerienNr oder Nennmaß).

Folgende Fehlermeldung erhalte ich, wenn ich einen Wert eingebe und auf OK klicke:
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. (PMDB)

Vielen Dank
Gruß Christoph

cyberchris

#1
Ich habe gerade herausgefunden, dass wenn ich "CStr" weglasse, es zwar funktioniert - aber nur wenn ich nur Zahlen eingebe. bei einer Kombi, wie z.B. "E06338" (Wert kommt bei Seriennummer vor) kommt gleiche Fehlermeldung (3071) wieder.

"Seriennummer" entällt Zahlen und/oder Buchstaben in Kombination
"Nennmaß" enthällt nur Zahlen

Wäre super, wenn das so irgendwie funktionieren würde.
Gruß Christoph

bahasu

Hi,

was passiert mit:
DoCmd.OpenForm "PM-Erweiterung", , , "SerienNr = '" & [Serien-Nr oder Nennmaß:] & "' or CStr([Nennmaß]) = '" & [Serien-Nr oder Nennmaß:] & "' and [Bezeichnung]='" & bezkenn & "'", acReadOnly

Das zweite '-Paar habe ich eingetragen wegen cstr.

Bei der Kombination von or und and sollten ggf. noch Klammern verwendet werden.

Harald

Servus

cyberchris

Hallo,

hier bekomme ich folgende Fehlermeldung:
2465: Prüfmitteldatenbank kann das in Ihrem Ausdruck angesprochene Feld '|1' nicht finden. (PMDB)

Gruß Christoph

DF6GL

Hallo,


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

sollte schon funktionieren, wobei "Nennmaß" vom Datentyp Double ist.

Allerdings ist es nicht so richtig nachvollziehbar, warum zwei Felder mit unterschiedlicher Bedeutung und Datentyp durch OR verkuttelt werden sollen/müssen.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

cyberchris

Hallo,

ich bekomme immer noch die gleiche Fehlermeldung.
Serien-Nr ist Test
und
Nennmaß Double

Der Hintergrund ist, nur 1 Abfrage, bzw. Button in einem Formular zu haben. Sofern ich das so nicht hinbekomme, muss ich eben 2 Buttons einbauen und separat abfragen. So wäre es eben eine Kombi gewesen und man kann nach beidem suchen.

Gruß Christoph

DF6GL

Hallo,

Setz nochmal die aktuelle Openform-Codezeile mit Copy&paste (!)  hier herein...


Oder lad die DB (vielleicht auf das nötigste reduziert, repariert/komprimiert und gezippt ) hier hoch...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

cyberchris

Hallo,

die DB kann ich leider nicht hier reinkopieren.
Zu groß + Frontend u. Backend...

Hier die aktuelle Codezeile:
DoCmd.OpenForm "PM-Erweiterung", , , "SerienNr = ([Serien-Nr oder Nennmaß:] or CStr([Nennmaß]) = [Serien-Nr oder Nennmaß:]) and [Bezeichnung]='" & bezkenn & "'", acReadOnly

Da der Fehler bereits in der Codezeile (nach Eingabe eines Wertes) erfolgt, dürfte das Form "PM-Erweiterung" hier keine Rolle spielen.

Gruß Christoph

MzKlMu

#8
Hallo,
Zitatdie DB kann ich leider nicht hier reinkopieren.
Zu groß + Frontend u. Backend...
dazu erstellt man ja auch eine Beispieldb, die nur die Dinge enthält die den Fehler/das Problem zu reproduziert und natürlich nicht geteilt (Front/Backend).
Repariert und gezippt
Gruß Klaus

DF6GL

Hallo,

schreib bitte noch, bei/mit welchen Eingabewerten in das Parameterfenster  die Fehelrmeldung erscheint und ob die Eingabewerte auch tatsächlich genau so in den Tabellenfeldern existieren.

Welche Access-Version und welche Windows Landes/Regions-Einstellung benutzt Du?
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

cyberchris

Hi,

also egal mit welchen Werten...
wenn ich einen Zahlenwert (z. B. "25") oder eine Kombination (z. B. "E06338").

Wenn ich das "CStr" weglasse, funktioniert es so lange wie ich nur Zahlen eingebe...

DB ist noch Access 2003, da ich die Access-Benutzerverwaltung verwende.
Access Verion ist aber bereits 2013 - Windows 7 (Landeseinstellung müsste alles deutsch sein - zumindest eingestellt auf deutsch. Installiert durch die IT).

Gruß Christoph

DF6GL

Hallo,

nun gut, dann kommen wir nur weiter, wenn Du wie Klaus schon gesagt hat, eine kleine Beispiel-DB machst und hier hochlädst.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Frank77

Hallo!
ich klinck mich da mal mit ein weil mich des irgend wie iritiert
Ok bin ja auch kein profi

was wär wenn der Filter einfach zusamen gesetzt wird

    Dim strFilter As String
    strFilter = "Bezeichnung = " & "'" & bezkenn & "' & " And Serien - Nr = "'" & Me!Eingabefeld & "' & " Or "Nennmaß = " & Me!Eingabefeld
    DoCmd.OpenForm "PM-Erweiterung", , , strFilter, acReadOnly


Gruß Frank
Selbstständig = Selbst und Ständig

MaggieMay

#13
Hallo,
Zitat von: cyberchris am Dezember 21, 2014, 08:55:29
Serien-Nr ist Test (-> vermutlich meinst du "Text")
und
Nennmaß Double
dann sollte der Code folgendermaßen aussehen:
DoCmd.OpenForm "PM-Erweiterung", , , "SerienNr = [Serien-Nr oder Nennmaß:] OR [Nennmaß] = CStr([Serien-Nr oder Nennmaß:]) And [Bezeichnung]='" & bezkenn & "'", acReadOnly

Bleibt die Frage, wie die Kriterien miteinander zu verknüpfen sind.
Bist du sicher, dass du keine Klammern setzen musst, bspw. nach folgendem Schema:(A=X OR B=X) And C=Y?

@Frank:
Deine Variante könnte folgendermaßen funktionieren:    strFilter = "Bezeichnung='" & bezkenn & "' And (SerienNr='" & Me!Eingabefeld & "' Or Nennmaß=" & CStr(Me!Eingabefeld) & ")"
Freundliche Grüße
MaggieMay

cyberchris

Hallo,

ich wollt eure Vorschläge gerade mal versuchen, bin aber gescheitert....
Was soll ich mit "Me!Eingabefeld" das gibt es bei mir doch garnicht!

Trotzdem vielen Dank
Gruß Christoph