InputBox Access 2003 mit Cancel/Abbrechen
-
Mittwoch, 23. Januar 2013 12:16
Hallo
ich möchte eine Inputbox haben in der ich den Button Cancel/Abrechen abfangen kann
wenn ich Cancel/Abrechen klicke hat ATR den wert 0 springt aber nicht in Case 0 rein
auch nicht in Case Else
Case Cancel habe ich nur zur Info drin weil dort soll er eigentlich bei Abbruch rein gehen nur weiss ich nicht was wie ich Cancel abfangen kann
Dim ATR As Double
Select Case ATR = InputBox("Auftragsrabatt", "Titel", 0)Case Cancel
Case 0
Case ElseEnd Select
Alle Antworten
-
Mittwoch, 23. Januar 2013 12:38Moderator
Hallo MCDPone,
MCDPone schrieb folgendes:
Hallo
ich möchte eine Inputbox haben in der ich den Button Cancel/Abrechen abfangen kann
wenn ich Cancel/Abrechen klicke hat ATR den wert 0 springt aber nicht in Case 0 rein
auch nicht in Case Else
Case Cancel habe ich nur zur Info drin weil dort soll er eigentlich bei Abbruch rein gehen nur weiss ich nicht was wie ich Cancel abfangen kann
Dim ATR As Double
Select Case ATR = InputBox("Auftragsrabatt", "Titel", 0)
Case Cancel
Case 0
Case Else
End SelectDie Rückgabe aus der Inputbox ist ein STRING.
Dim ATR As String Select Case ATR = InputBox("Auftragsrabatt", "Titel", "0") Case "0" Case Else ' Sontige Werte End SelectGruß
Gunter
Access FAQ: http://www.donkarl.com
http://www.avenius.de - http://www.AccessRibbon.de
http://www.ribboncreator.de - http://www.ribboncreator2010.de -
Mittwoch, 23. Januar 2013 14:35
OK - Danke
aber wenn ich den wert "0" benötige aber auch wissen möchte wurde Abgebrochen
sprich wurde "0" übergeben mit Enter oder OK Button oder wurde der Cancel Button geklickt
vorgabe soll aber "0" sein
- Bearbeitet MCDPone Mittwoch, 23. Januar 2013 14:40
-
Mittwoch, 23. Januar 2013 14:55Moderator
Hallo MCDPone,
MCDPone schrieb folgendes:
...
Wenn Du "Abrechen" wählst wird von der Inputbox ein leer String
zurüchgeben ("").Gruß
Gunter
Access FAQ: http://www.donkarl.com
http://www.avenius.de - http://www.AccessRibbon.de
http://www.ribboncreator.de - http://www.ribboncreator2010.de -
Mittwoch, 23. Januar 2013 15:18
Sieht jetzt so aus
Dim ATR As String
Select Case ATR = InputBox("Vorgangsrabatt", "Titel""0")
Case ""
Case "0"
Case ElseEnd Select
bei OK oder Enter springt er jetzt in Case "" rein und nicht in Case "0" obwohl 0 als STandard gesetzt ist und beim aufruf auch die 0 in der Inputbox angezeigt wird
-
Mittwoch, 23. Januar 2013 15:24Moderator
Hallo MCDPone,
MCDPone schrieb folgendes:
Sieht jetzt so aus
Dim ATR As String
Select Case ATR = InputBox("Vorgangsrabatt", "Titel <http://www.csr-software.de/>""0")
Case ""
Case "0"
Case Else
End Select
bei OK oder Enter springt er jetzt in Case "" rein und nicht in Case "0" obwohl 0 als STandard gesetzt ist und beim aufruf auch die 0 in der Inputbox angezeigt wird
Dann drösel es auf und kontrolliere den Inhalt der Variable:
[code]
Dim ATR As String
ATR = InputBox("Vorgangsrabatt", "Titel","0")MsgBox ">" & ATR & "<"
'bzw:
Debug.Print ">" & ATR & "<"Select Case ATR
Case ""
Case "0"
Case ElseEnd Select
[/codeGruß
Gunter
Access FAQ: http://www.donkarl.com
http://www.avenius.de - http://www.AccessRibbon.de
http://www.ribboncreator.de - http://www.ribboncreator2010.de- Als Antwort vorgeschlagen Gunter AveniusModerator Mittwoch, 23. Januar 2013 16:09
-
Mittwoch, 23. Januar 2013 15:38
OK danke
Dim ATR As String
Select Case ATR = InputBox("Vorgangsrabatt", "Titel","0")
Case ""Case "0"
Case Else
End Select
geht nicht
Dim ATR As String
ATR = InputBox("Vorgangsrabatt", "Titel","0")Select Case ATR
Case ""
Case "0"
Case ElseEnd Select
geht wiederrum
also Problem gelöst - verstehe nicht ganz wieso
- Als Antwort markiert MCDPone Mittwoch, 23. Januar 2013 15:38
- Bearbeitet MCDPone Mittwoch, 23. Januar 2013 16:02 w
- Tag als Antwort aufgehoben Gunter AveniusModerator Mittwoch, 23. Januar 2013 16:09
-
Donnerstag, 24. Januar 2013 02:09
Hallo MCDPone
"MCDPone" schrieb im Newsbeitrag news:824492dc-4cf9-4b5e-9535-5fdb1f7e0645@communitybridge.codeplex.com...
ich möchte eine Inputbox haben in der ich den Button Cancel/Abrechen
abfangen kann
wenn ich Cancel/Abrechen klicke hat ATR den wert 0 springt aber nicht
in Case 0 rein
auch nicht in Case Else
Case Cancel habe ich nur zur Info drin weil dort soll er eigentlich bei
Abbruch rein gehen nur weiss ich nicht was wie ich Cancel abfangen kann
Dim ATR As Double
Select Case ATR = InputBox("Auftragsrabatt", "Titel", 0)
Case Cancel
Case 0
Case Else
End SelectDein Select Statement wird True oder False zurückgeben, weil das = nicht als Zuweisung, sondern als Vergleich interpretiert wird.
ATR hast Du gleich vorher deklariert, es dürfte also 0 (Double) drin haben. Wenn der Wert von ATR gleich dem Wert der InputBox() Rückgabe Funktion ist, dann ist das SELECT Statement True (-1). Nun ist aber der Wert der InputBox im Falle des Abbrechens ein leerer String. Dies zwingt Access dazu auch den Inhalt von ATR auf String umzuwandeln, damit verglichen werden kann, also wird daraus "0" werden. Und damit wird Dein SELECT CASE Statement zuSELECT CASE ("0" = "")
Dies wird also False zurück geben. Und wieso springt er nicht in 0 rein? Ganz einfach: Du verwendest die Variable Cancel, welche oftmals als Parameter für Ereignisprozeduren reserviert ist. Wenn Cancel = False ist (das ist der Default), wird das Select Statement also in den Cancel Zweig reinspringen und damit hat sichs.
Was Du machen möchtest ist vermutlich Folgendes (ungetestet)
Dim strRetValue As String Dim ATR as Double strRetValue = InputBox("Auftragsrabatt", "Titel", 0) if strRetValue = "" Then 'Abbrechen gedrückt oder nichts eingegeben ATR = 0 Else if not IsNumeric(ATR) Then 'es wurde keine Zahl eingegeben ATR = 0 'setzen wir ATR mal auf 0, allenfalls wäre hier der Abbrechen Zweig richtiger Else ATR = CDbl(strRetValue) 'es wurde eine Zahl einegeben 'Hier kannst Du nun noch auf Eingabe 0 prüfen End If End If
Und nun kannst Du, wenn es noch nötig ist, das Case Statement auf ATR ausführen. Ich denke allerdings, dass sich das damit erledigt hat.
Gruss
Henry- Als Antwort markiert MCDPone Donnerstag, 24. Januar 2013 16:04
-
Donnerstag, 24. Januar 2013 02:14
Hallo MCDPone
"MCDPone" schrieb im Newsbeitrag news:ecaed209-ab78-430c-b2dc-5ee6ff7edec5@communitybridge.codeplex.com...
also Problem gelöst - verstehe nicht ganz wieso
Siehe mein Posting. Du kannst keine Zuweisung in einem Case Statement machen. Und was hier zuschlägt ist die implizite Datentypen Konversion auf den "schwächsten" Datentypen (String wegen der Inputbox()) und ein anschliessender String-Vergleich (= ist hier ein Vergleichs Parameter), der immer in True/False enden wird.
Es gibt schon Gründe, wieso in anderen Programmiersprachen ein unerschiedlicher Operator für den Vergleich (==) und für die Zuweisungen (:=) verwendet wird. Genau aus dem Grund, dass eben sonst nicht immer gerade auf den ersten Blick sichtbar wird, ob es sich nun hzier um einen Vergleich oder eine Zuweisung handelt.
Gruss
Henry

