Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: cyberchris am Dezember 21, 2014, 07:08:29

Titel: Where Condition mit Abfragefenster
Beitrag von: cyberchris am Dezember 21, 2014, 07:08:29
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: cyberchris am Dezember 21, 2014, 07:22:59
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: bahasu am Dezember 21, 2014, 07:38:19
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

Titel: Re: Where Condition mit Abfragefenster
Beitrag von: cyberchris am Dezember 21, 2014, 08:24:48
Hallo,

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

Gruß Christoph
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: DF6GL am Dezember 21, 2014, 08:43:12
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.
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: cyberchris am Dezember 21, 2014, 08:55:29
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: DF6GL am Dezember 21, 2014, 09:51:33
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...
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: cyberchris am Dezember 21, 2014, 10:38:53
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: MzKlMu am Dezember 21, 2014, 11:06:20
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: DF6GL am Dezember 21, 2014, 11:09:10
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?
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: cyberchris am Dezember 21, 2014, 11:47:56
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: DF6GL am Dezember 21, 2014, 11:53:37
Hallo,

nun gut, dann kommen wir nur weiter, wenn Du wie Klaus schon gesagt hat, eine kleine Beispiel-DB machst und hier hochlädst.
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: Frank77 am Januar 02, 2015, 18:10:55
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: MaggieMay am Januar 02, 2015, 19:18:04
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) & ")"
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: cyberchris am Februar 20, 2015, 09:09:09
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: MaggieMay am Februar 23, 2015, 13:52:28
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).
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: cyberchris am Februar 28, 2015, 21:57:32
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: MaggieMay am März 02, 2015, 00:17:48
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
Titel: Re: Where Condition mit Abfragefenster
Beitrag von: cyberchris am März 02, 2015, 12:08:55
Jetzt kommt wieder die Fehlermeldung wie zu Beginn:-)

Ich lasse es so, wie bereits geschrieben - 2 separate Abfragen...

Gruß Christoph