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
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
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
Hallo,
hier bekomme ich folgende Fehlermeldung:
2465: Prüfmitteldatenbank kann das in Ihrem Ausdruck angesprochene Feld '|1' nicht finden. (PMDB)
Gruß Christoph
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.
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
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...
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
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
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?
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
Hallo,
nun gut, dann kommen wir nur weiter, wenn Du wie Klaus schon gesagt hat, eine kleine Beispiel-DB machst und hier hochlädst.
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
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 & "'", acReadOnlyBleibt 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) & ")"
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
Hallo,
hier noch einmal der Open-Befehl mit deinen Feldnamen:DoCmd.OpenForm "PM-Erweiterung", , , "(SerienNr = [Serien-Nr oder Nennmaß:] OR [Nennmaß] = CStr([Serien-Nr oder Nennmaß:])) AND [Bezeichnung]='" & bezkenn & "'", acReadOnlyund diesmal hoffentlich korrekter Syntax (inkl. Klammersetzung).
Guten Abend,
an für sich geht die mit dem Code, jedoch fehlt hier leider die like Funktion bei SerienNr - d. h. Ergebnis auch mit Teil einer Seriennr.
Passt das da noch rein, oder geht das sonst wieder nicht mehr...
Danke
Gruß Christoph
Hallo,
Zitatjedoch fehlt hier leider die like Funktion bei SerienNr
meinst du das so vielleicht:
DoCmd.OpenForm "PM-Erweiterung", , , "(SerienNr LIKE '*' & [Serien-Nr oder Nennmaß:] & '*' OR [Nennmaß] = CStr([Serien-Nr oder Nennmaß:])) AND [Bezeichnung]='" & bezkenn & "'", acReadOnly
Jetzt kommt wieder die Fehlermeldung wie zu Beginn:-)
Ich lasse es so, wie bereits geschrieben - 2 separate Abfragen...
Gruß Christoph