PDA

Vollständige Version anzeigen : If "Kombifeld" ist nicht ausgewählt...


Sandrine
14.08.2001, 10:57
Sorry, ist wahrscheinlich völlig einfach, aber ich stehe heute extrem unter Zeitdruck und bekomme das Problem nicht in den Griff. Wenn Ihr so lieb wärt, mir mal wieder zu helfen???

Ich gebe im Formularkopf in ungebundenen Feldern eien Adresse ein, ein Feld ist ein Kombifeld namens adresstitel, hier können Dr. Prof.etc ausgewählt werden. Wenn man hier nichts auswählt, das Feld also im Urzustnd läßt, soll in der Anrede im Formular nur der Name stehen (adressnachname), sonst eben adresstitel & Adressname.

Sämtliche Versuche einer If-Abfrage scheitern, obwohl die else-Zeile nicht erreicht werden dürfte, wird diese "reklamiert".

If IsNull(Me.adresstitel) Then
Me.Anrede = meldung1 & Me.adressnachname & ","
Else: Me.Anrede = meldung1 & Me.adresstitel & " " & Me.adressnachname & ","
End If

Ich habs auch schon mit <> 0, = 0, ="" und <> "" versucht, geht alles nicht.
Die Werte für das Kombifeld habe ich per Assistent seber eingegeben.

Habt Ihr eine Idee?

Gruß, Sandrine

Andorxor
14.08.2001, 11:32
Versuchs mit:
If IsNull(Me.adresstitel.value) Then
Me.Anrede = meldung1 & Me.adressnachname & ","
Else: Me.Anrede = meldung1 & Me.adresstitel & " " & Me.adressnachname & ","
End If

Sandrine-e
14.08.2001, 11:42
Ups, mein Kennwort wird nicht akzeptiert...

Schade, der Lösungsvorschlag klappt leider nicht.

Die Fehlermeldung lautet (wie bisher): LZF 2447: Ein .(Punkt) oder !-Operator wird auf unzulässige Weise eingesetzt, oder es liegt ein unzulässiges Klammernpaar vor. Sie haben möglicherweise einen ungültigen Bezeichner eingegeben oder hinter die Konstante Null ein Klammernpaar gesetzt.

sekoe
14.08.2001, 12:00
Hi Sandrine,

Steht da hinter dem ELSE tatsächlich ein Doppelpunkt ???
Wenn ja, muss der weg !

Sandrine-e
14.08.2001, 12:12
Der Doppelpunkt wird von Access (A97) automatisch gesetzt... da hab ich gar keine Wahl. Ist auch in allen anderen funktionierenden If-Abfragen so...

sekoe
14.08.2001, 12:29
Hi,
(komischer Doppelpunkt, man lernt nie aus)
Also bei genauer Betrachtung Deines Codes, faällt mir nicht viel ein, probiere doch mal:
If NZ(Me.adresstitel) Then
Diese NZ-Funktion auch bei den anderen Textfelder einsetzen, damit ein NULL-Wert in '' "übersetzt" wird. Also:
Me.Anrede = meldung1 & Nz(Me.adresstitel) & " " & nz(Me.adressnachname) & ","

Sandrine-e
14.08.2001, 12:44
Hi, klingt ja sehr gut, das NZ (habs mal nachgelesen) und überall eingesetzt, aber die Fehlermeldung bleibt gleich. Nur die LZF-Nr ist jetzt'-2147352567 (80020009)' Klingt mächtig wichtig...

If Nz(Me.adresstitel) Then
Me.Anrede = meldung1 & Nz(Me.adressnachname) & ","
Else: Nz(Me.Anrede) = meldung1 & Nz(Me.adresstitel) & " " & Nz(Me.adressnachname) & ","
End If

sekoe
14.08.2001, 12:55
-2147352567 (80020009) klingt cool.
Was ist den meldung1 für ein Feld, kann das auch NULL sein ? Sind die Felder auch Wirklich ungebunden ? (Anrede ?)
Probiere nochmal folgendes:
Me.Anrede = nz(meldung1) & IIf(Nz(Me.adresstitel),Nz(Me.adressnachname),Nz(Me.adresstitel) & Nz(Me.adressnachname)) & ","

Sandrine-e
14.08.2001, 13:13
meldung 1 wird definiert als "Sehr geehrter Herr" bzw. "Sehr geehrte Frau". Ist eine Variable, abhängig vom Geschlecht des Antragstellers. Kann nicht Null sein. In alle anderen Textfelder habe ich Daten eingegeben. Wenn ich in adresstitel die Option " " auswähle, klappt auch alles wunderbar, nur wenn ich das Feld eben nicht anfasse, gehts nicht.

Habe jetzt auch schon probiert, abzufragen, ob alle möglichen vorgegebenen Werte nicht gewählt wurden und dann dem Feld den Wert " " zuzuweisen, der Fehler bleibt der Gleiche aber wieder mit der uncoolen Nr. 2447.

Deinen letzten Vorschlag in die If-Schleife oder "pur"?

A.S.
14.08.2001, 13:25
Hallo Sandrine,

die Syntaxprüfung zur Laufzeit erfolgt sowieso, wenn Du keine MDE verwendest.

Das IF sollte eigentlich korrekt sein, aber versuche einmal dieses Konstrukt

If Trim("" & Me.adresstitel) = "" Then

Besteht ein besonderer Grund, warum Du das Coding im Else-Zweig nicht in eine eigene Zeile setzt?

Probier das einmal. Ansonsten sieht das Coding doch eingentlich gut aus....

Gruß

Arno

Sandrine-e
14.08.2001, 13:32
Hi Arno,

wie schön, daß Du noch nicht ganz verschwunden bist!

Soll Deine Hilfe natürlich nicht schmälern, sekoe!

Muß jetzt nach Hause, werde heute abend weiterversuchen und alles ausprobieren. Ist doch zum Verzweifeln, wenn sowas anscheinend simples nicht funktioniert...

Melde mich dann wieder!

Gruß, Sandrine

kalle
14.08.2001, 13:34
Hallo!

Ich glaub Arno ist mit der Frage warum du Else und den Rest in der Zeile nicht trennst ziemlich richtig. Der Doppelpunkt wird gesetzt, wenn du hinter Else keinen Break machst, vermutlich deklariert Access das dann als irgendetwas anderes.

Schreib also mal

If IsNull(Me.adresstitel) Then
Me.Anrede = meldung1 & Me.adressnachname & ","
Else
Me.Anrede = meldung1 & Me.adresstitel & " " & Me.adressnachname & ","
End If

(also hinter Else einen Break (Return) und den Doppelpunkt weg). Dann sollte es eigentlich gehen

Gruß, Kalle

Birgit Dannenberg
14.08.2001, 13:40
Wie wärs denn mit

If IsNull(me!adresstitel) ...

Die Fehlermeldung wird doch irgendeinen Sinn haben, oder?


hth Birgit

P.S. siehe FAQ 6.3 bei www.donkarl.com (http://www.donkarl.com)

Stema
14.08.2001, 13:49
Hallo Leute,

ich muß mich auch mal einmischen.
Also, daß mit dem Else: stellt absolut kein Problem dar.
Es gibt z.B. auch die Möglichkeit:
If Me.optAbfrage = True then msgbox "Achtung!" : Exit Sub
dann werden im Wahrheitsfall beide Befehle ausgeführt ohne ein End If zu benötigen.

Wenn ich es richtig sehe kann nur Me.Adresstitel und Me.adressnachname NULL sein.
Versuch's doch mal so:

dim meldung1 as string
If IsNull(Me.adresstitel) Then
Me.Anrede = meldung1 & Nz(Me.adressnachname) & ","
Else: Me.Anrede = meldung1 & Nz(Me.adresstitel) & " " & Nz(Me.adressnachname) & ","
End If

Noch 'ne Frage. was ist Me.Anrede für ein Objekt. Bei Textbox, Combobox gilt obiges. Bei einem Bezeichnungsfeld:
Me.Anrede.Caption = meldung1 ...

Sandrine-e
15.08.2001, 06:33
So, nun hab ich gestern abend probiert und probiert, und probiert... Nix klappte.

Zufällig hatte ich noch eine alte Version der db zuhause und da hatte das Feld adresstitel den Standardwert "Dr.", dann mußte man ja den leeren Eintrag anklicken, der wert konnte nicht NULL sein, alles lief glatt.

In der aktuellen DB nochmal alle Eigenschaften des Feldes gecheckt, alles völlig identisch. :confused:

Dann gab ich entnervt auf, hatte schon Umgehungsideen im Kopf (beim Öffnen einen Wert zuweisen und so...), hab aber vorher das Feld einfach mal gelöscht und neu angelegt.

Und - jetzt klappts mit dem Code ganz oben. Also einfach mit IsNUll(me.adresstitel). Muß ich das verstehen?

Falls jemand eine Idee hat, wie so etwas passiert, würde es mich brennend interessieren, ansonsten hake ich es unter Mr.Gates sadistische Versuche, kleine harmlose User komplett zu verwirren, ab. Hauptsache ich komme da endlich weiter!

Vielen lieben Dank für Eure vielen Tipps und sorry, daß ich Euch unfreiwillig so in die Irre geführt habe!

Gruß, Sandrine (deren Passwort immer noch nicht erkannt wurde und deren sämtliche mögliche emails unbekannt sind...)