PDA

Vollständige Version anzeigen : IsNull - Null und nichtig?


formular.bib
23.10.2003, 13:10
Hallo an alle,

ich steh gerade vor einem Problem, dass für manche lächerlich klingt, wenn man die Logik verstanden hat; leider bin ich noch nicht soweit...


Private Sub cmdSuche_starten_Click()
' Abfrage, ob ein Optionsbutton gewählt wurde
If IsNull(frame_FormSuche.Value) Then
MsgBox "Bitte wählen Sie eine Option ein!", vbCritical
Else
' Abfrage, ob ein Suchkriterium eingetragen wurde
If IsNull(Me!txt_FormBez) Then
MsgBox "Bitte tragen Sie ein Suchkriterium ein!", vbOKOnly
Else: IsNull (Me!txt_FormBez)
MsgBox "Ja, endlich!", vbInformation
End If

End Sub


Leider komme ich nicht in den letzten ELSE-Zweig, auch wenn ich ein Suchkriterium angegeben habe!
Die MsgBox "Ja, endlich!" dient mir nur als Marker, dass es gefunzt hat.

Wer weiss, was daran falsch ist???

mfg

Roland

racoon0506
23.10.2003, 13:15
was soll diese Else-Zeile bewirken? Auf Null prüfst du doch bereits in der If Anweisung selbst.....

gertl
23.10.2003, 13:17
Hallo,

Erstens gehört nach else kein : .
Zweitens frägst du zweimal das gleiche ab. Bei else kannst du dir IsNull() sparen.

Ciao
Gertl

racoon0506
23.10.2003, 13:20
@gertl:
.... da darf aber ein Doppelpunkt hin! Ist in diesem Falle ein Trennzeichen und bedeutet, dass hiernach ein weiterer Befehl kommt. Ohne den Doppelpunkt muss der Rest in eine weitere (eigene) Zeile.....
(mal davon abgesehen, dass die Syntax nicht korrekt ist mit dem IsNull.....)

Lab-Doc
23.10.2003, 13:22
hi,
aber es werden ja zwei versch. felder abgefragt!. auf jeden fall fehlt ein end if. und der doppelpunkt beim 2. else gehört auch weg, bzw. auch alles dahinter

grüsse

doc

racoon0506
23.10.2003, 13:27
@Lab-Doc: das fehlende End If ist richtig! Zum Doppelpunkt siehe mein letztes Posting! Jedoch ist es in diesem Fall wirklich überflüssig, dort die gleiche Bedingung nochmals einzustellen!

formular.bib
23.10.2003, 13:46
danke an euch alle; habe den Code soweit abgeändert:
-> fehlendes End If ergänzt
-> Doppelpunkt weggenommen

Was will ich erreichen?
Wenn ein Suchkriterium eingetragen wurde (IsNull ist dann ja False), sollen in einem Ergebnis-Listenfeld die zugehörigen Formulare mit verschiedenen Attributen aufgelistet werden, that's all!!! :D

Als Spaltenüberschriften werden darin alle sechs Suchkriterien angezeigt. Der User klickt sich eine Zeile an, und soll dann anschl. auf eine Formular-Oberfläche weitergeleitet werden.
Dort sind dann (hoffentlich alle zugehörigen Attribute in bereits angelegte Felder eingetragen. Noch alles verständlich? :confused:

Bitte um weitere Ideen, danke.

Roland

Roland

formular.bib
23.10.2003, 15:03
lebt hier noch jemand im Forum?

Ich komm nicht richtig weiter:
[Code]: s Anhang

Wenn ein Optionsbutton gewählt, und ein Suchkriterium eingetragen wurde, erscheint trotzdem die zweite MsgBox; das versteh ich nicht!

Außerdem möchte ich den Fokus gleich ins entsprechende Textfeld setzen,
was ich eigentlich in der unteren Public Sub abarbeite. Für sich getrennt läuft es da auch...

mfg

Roland

Arne Dieckmann
23.10.2003, 15:12
Anstatt mich im Betreff anzusprechen (ich mag das nicht so - das weiss zumindest Jochen schon), wäre es evtl. besser, Deinen jetzigen Code zu posten. Dein Anhang ist übrigens nicht sehr aussagekräftig, bzw. hilft uns hier auch nicht weiter.

Wie sieht es denn hiermit aus?:

If IsNull(Me!frame_FormSuche) Then
MsgBox "Bitte wählen Sie eine Option ein!", vbCritical
Else
'Abfrage, ob ein Suchkriterium eingetragen wurde
If IsNull(Me!txt_FormBez) Then
MsgBox "Bitte tragen Sie ein Suchkriterium ein!", vbOKOnly
Else
MsgBox "Ja, endlich!", vbInformation
End If
End If

formular.bib
23.10.2003, 19:34
Ich mach mal wieder einen Versuch:


Private Sub cmdSuche_starten_Click()
' Abfrage, ob ein Optionsbutton gewählt wurde
If IsNull(frame_FormSuche.Value) Then
MsgBox "Bitte wählen Sie eine Option ein!", vbCritical
Else
' Abfrage, ob eine FormularBezeichnung eingetragen wurde
If IsNull(Me!txt_FormBez) Then
MsgBox "Bitte tragen Sie eine FormularBezeichnung ein!", vbOKOnly
Me!txt_FormBez.Enabled = True
Me!txt_FormBez.SetFocus
Me!txt_FormSign.Enabled = False
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else
If IsNull(Me!txt_FormSign) Then
Me!txt_FormBez.Enabled = False
MsgBox "Bitte tragen Sie eine FormularSignatur ein!", vbOKOnly
Me!txt_FormSign.Enabled = True
Me!txt_FormSign.SetFocus
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else
...
Else
MsgBox "Geschafft", vbInformation
End If
End If
End Sub


Läuft leider nicht so wie ich will:

-> Option auswählen, sonst MsgBox
-> Suchkriterium wählen, sonst MsgBox; dabei exclusiven(!) Focus setzen
-> später Übername in ein Ergebnis-Listenfeld

Bin schon genervt... danke für jeden Hinweis!

Roland

Arne Dieckmann
23.10.2003, 19:40
Wenn ich mich nicht verzählt habe, dann hast Du
3* IF
4* ELSE
2* END IF

Da würde ich mal ansetzen - oder Du solltest beim "Ausdünnen" des Codes etwas vorsichtiger sein. :confused:

formular.bib
23.10.2003, 19:59
Arne hat den Punkt getroffen: tatsächlich kommt die Meldung:
IF-Block ohne End IF, aber ich weiss nicht wo!!!

darf ich den ganzen Block zeigen?


Private Sub cmdSuche_starten_Click()
' Abfrage, ob ein Optionsbutton gewählt wurde
If IsNull(frame_FormSuche.Value) Then
MsgBox "Bitte wählen Sie eine Option ein!", vbCritical
Else
' Abfrage, ob eine FormularBezeichnung eingetragen wurde
If IsNull(Me!txt_FormBez) Then
MsgBox "Bitte tragen Sie eine FormularBezeichnung ein!", vbOKOnly
Me!txt_FormBez.Enabled = True
Me!txt_FormBez.SetFocus
Me!txt_FormSign.Enabled = False
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else
If IsNull(Me!txt_FormSign) Then
Me!txt_FormBez.Enabled = False
MsgBox "Bitte tragen Sie eine FormularSignatur ein!", vbOKOnly
Me!txt_FormSign.Enabled = True
Me!txt_FormSign.SetFocus
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else
If IsNull(Me!txt_paderSign) Then
Me!txt_FormBez.Enabled = False
Me!txt_FormSign.Enabled = False
MsgBox "Bitte tragen Sie eine paderlogSignatur ein!", vbOKOnly
Me!txt_paderSign.Enabled = True
Me!txt_paderSign.SetFocus
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else
If IsNull(Me!txt_Schlagwort) Then
Me!txt_FormBez.Enabled = False
Me!txt_FormSign.Enabled = False
Me!txt_paderSign.Enabled = False
MsgBox "Bitte tragen Sie ein Schlagwort ein!", vbOKOnly
Me!txt_Schlagwort.Enabled = True
Me!txt_Schlagwort.SetFocus
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else
If IsNull(Me![combo_AnfordStelle]) Then
Me!txt_FormBez.Enabled = False
Me!txt_FormSign.Enabled = False
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
MsgBox "Bitte tragen Sie eine Anforderungsstelle ein!", vbOKOnly
Me![combo_AnfordStelle].Enabled = True
Me![combo_AnfordStelle].SetFocus
Me![combo_Kostenstelle].Enabled = False
Else
If IsNull(Me![combo_Kostenstelle]) Then
Me!txt_FormBez.Enabled = False
Me!txt_FormSign.Enabled = False
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
MsgBox "Bitte tragen Sie eine Kostenstelle ein!", vbOKOnly
Me![combo_Kostenstelle].Enabled = True
Me![combo_Kostenstelle].SetFocus
Else
MsgBox "Hier kommt dann die Weiterverarbeitung"
End If
End If
End Sub


danke für's kontrollieren; Jochen ist nicht mehr hier...

Roland

racoon0506
24.10.2003, 02:06
versucht es mal so:

Private Sub cmdSuche_starten_Click()
' Abfrage, ob ein Optionsbutton gewählt wurde
If IsNull(frame_FormSuche.Value) Then
MsgBox "Bitte wählen Sie eine Option ein!", vbCritical
Else
' Abfrage, ob eine FormularBezeichnung eingetragen wurde
If IsNull(Me!txt_FormBez) Then
MsgBox "Bitte tragen Sie eine FormularBezeichnung ein!", vbOKOnly
Me!txt_FormBez.Enabled = True
Me!txt_FormBez.SetFocus
Me!txt_FormSign.Enabled = False
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else If IsNull(Me!txt_FormSign) Then
Me!txt_FormBez.Enabled = False
MsgBox "Bitte tragen Sie eine FormularSignatur ein!", vbOKOnly
Me!txt_FormSign.Enabled = True
Me!txt_FormSign.SetFocus
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else If IsNull(Me!txt_paderSign) Then
Me!txt_FormBez.Enabled = False
Me!txt_FormSign.Enabled = False
MsgBox "Bitte tragen Sie eine paderlogSignatur ein!", vbOKOnly
Me!txt_paderSign.Enabled = True
Me!txt_paderSign.SetFocus
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else If IsNull(Me!txt_Schlagwort) Then
Me!txt_FormBez.Enabled = False
Me!txt_FormSign.Enabled = False
Me!txt_paderSign.Enabled = False
MsgBox "Bitte tragen Sie ein Schlagwort ein!", vbOKOnly
Me!txt_Schlagwort.Enabled = True
Me!txt_Schlagwort.SetFocus
Me![combo_AnfordStelle].Enabled = False
Me![combo_Kostenstelle].Enabled = False
Else If IsNull(Me![combo_AnfordStelle]) Then
Me!txt_FormBez.Enabled = False
Me!txt_FormSign.Enabled = False
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
MsgBox "Bitte tragen Sie eine Anforderungsstelle ein!", vbOKOnly
Me![combo_AnfordStelle].Enabled = True
Me![combo_AnfordStelle].SetFocus
Me![combo_Kostenstelle].Enabled = False
Else If IsNull(Me![combo_Kostenstelle]) Then
Me!txt_FormBez.Enabled = False
Me!txt_FormSign.Enabled = False
Me!txt_paderSign.Enabled = False
Me!txt_Schlagwort.Enabled = False
Me![combo_AnfordStelle].Enabled = False
MsgBox "Bitte tragen Sie eine Kostenstelle ein!", vbOKOnly
Me![combo_Kostenstelle].Enabled = True
Me![combo_Kostenstelle].SetFocus
Else
MsgBox "Hier kommt dann die Weiterverarbeitung"
End If
End If
End Sub

(nicht getestet....)