Habe folgenden Code eingegeben:
Option Compare Database
Option Explicit
Private Sub Form_Load() ' Beim Laden
Me.Caption = "Einführungsbeispiel in Access Basic" ' Beschriftung
Me.RecordSource = "Personen" ' Datenherkunft
Me.ScrollBars = 0 ' Bildlaufleisten
Me.RecordSelectors = False ' Datensatzmarkierer
Me.DividingLines = False ' Trennlinien
Text0.ControlSource = "Nachname" ' Steuerelementinhalt
Text1.ControlSource = "Vorname" ' dto.
Text2.ControlSource = "Geburtsdatum" ' dto.
Text2.Format = "dd/mm/yyyy" ' Format-Eigenschaft
Text3.ControlSource = "Monatsgehalt" ' Steuerelementinhalt
Text3.Format = "Currency" ' Format
Text4.ControlSource = "=Year(Date())-Year([Geburtsdatum])" '
Steuerelementinhalt
Text5.ControlSource = "=12*[Monatsgehalt]" '
Steuerelementinhalt
Text5.Format = "Currency" ' Format
End Sub
Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor Aktualisierung
If Text3.Value > 10000 Then Beep
MsgBox "Gehalt überprüfen!"
End Sub
Private Sub Befehl0_Click() ' Beim Klicken
DoCmd.Close
End Sub
Egal welchen Wert ich im Text3 Feld eingegeben habe - es erscheint immer die
Messagebox und nicht wie vorgegeben erst ab > 10000.
Ich kann keinen Fehler erkennen, könnt Ihr was entdecken?
Freundliche Grüße aus München
Matthias
* Matthias Becker (Fr, 22 Okt 2004 19:54:34 GMT):
> Private Sub Text3_BeforeUpdate(Cancel As Integer)
> If Text3.Value > 10000 Then Beep
> MsgBox "Gehalt überprüfen!"
> End Sub
> Egal welchen Wert ich im Text3 Feld eingegeben habe - es
> erscheint immer die Messagebox und nicht wie vorgegeben erst ab
> > 10000.
Schau Dir mal in der Online-Hilfe das Stichwort "Value" genau an.
Da steht unter anderem:
Die Eigenschaft Text gibt die formatierte Zeichenfolge zurück.
Die
Einstellung dieser Eigenschaft kann sich von der Einstellung der
Eigenschaft Value für ein Textfeld-Steuerelement unterscheiden.
Die
Eigenschaft Text entspricht dem aktuellen Inhalt des
Steuerelements.
Die Eigenschaft Value entspricht dem gespeicherten Wert des
Textfeld-Steuerelements.
Da Du BeforeUpdate bist, ist das Feld /noch nicht/ gespeichert.
Gruss - Mark
--
Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm
Bitte keine eMails auf Newsgroup-Beiträge senden.
If Text3.Value > 10000 Then
Beep
MsgBox "Gehalt überprüfen!"
endif
Gruß Peter
"Matthias Becker" <matt...@msn.com> schrieb im Newsbeitrag
news:41796577$0$22616$9b4e...@newsread4.arcor-online.net...
> versuche es doch mal so,
>
> If Text3.Value > 10000 Then
> Beep
> MsgBox "Gehalt überprüfen!"
> endif
End If erzeugt hier den Fehler "End If ohne If-Block" :-(
Grüße
Matthias
> Da Du BeforeUpdate bist, ist das Feld /noch nicht/ gespeichert.
Wenn ich im Eigenschaften-Fenster im Ereignis "Vor Aktualisierung" ein Makro
einsetze:
Bedingung: [Monatsgehalt]>10000
Aktion: Meldung
Meldung: Gehalt überprüfen
funktioniert das ganze tadellos.
Wenn ich Dich richtig verstanden habe, muss ich also bei der VBA-Lösung
einen anderen Eventhandler verwenden?
Grüße
Matthias
* Matthias Becker (Fr, 22 Okt 2004 20:20:38 GMT):
> Wenn ich Dich richtig verstanden habe, muss ich also bei der
> VBA-Lösung einen anderen Eventhandler verwenden?
Nein, nimm .Text ...
> Nein, nimm .Text ...
Ich wünschte, ich könnte was Anderes berichten, aber das Problem bleibt auch
nach dieser Änderung (If Text3.Text > 10000 Then Beep) bestehen.
Das gibt's doch gar nicht, oder?
Grüße
Matthias
Mark Doerbandt schrieb:
> * Matthias Becker (Fr, 22 Okt 2004 19:54:34 GMT):
>> Private Sub Text3_BeforeUpdate(Cancel As Integer)
>> If Text3.Value > 10000 Then Beep
>> MsgBox "Gehalt überprüfen!"
>> End Sub
<F1> If
=>
If <Bedingung> Then
Anweisung 1
Anweisung 2
End If
> Da Du BeforeUpdate bist, ist das Feld /noch nicht/ gespeichert.
Hast Du das ausprobiert?
Bei mir kommt der zuvor eingetragene Wert schon im
BeforeUpdate-Ereignis.
(.Value = .Text)
mfg
Josef
--
EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/
* Josef Poetzl (Fr, 22 Okt 2004 20:49:00 GMT):
> <F1> If
Ja, aber das hatte Matthias ja schon angemerkt.
> Hast Du das ausprobiert?
> Bei mir kommt der zuvor eingetragene Wert schon im
> BeforeUpdate-Ereignis.
> (.Value = .Text)
Aechz. Ja, Du hast Recht. In /Change/ ist es wie von mir, in
BeforeUpdate so wie von Dir beschrieben (ich gehe jetzt lieber
schlafen).
Danke nochmal für Eure Unterstützung!
Habe das Problem gefixt, wenn mir die Hintergründe auch nicht ganz klar
sind:
Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor Aktualisierung
If Text3.Value > 10000 Then MsgBox "Gehalt überprüfen!"
End Sub
D.h. ich habe das "Beep" gelöscht und die Zeile mit der MsgBox eine Zeile
höher rangehängt.
Jetzt funktioniert's, auch wenn's für mich total unsinnig ist, aber gut
:-)
Grüße
Matthias
Matthias Becker <matt...@msn.com> schrieb:
>> Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor Aktualisierung
>> If Text3.Value > 10000 Then Beep
>> MsgBox "Gehalt überprüfen!"
>> End Sub
> Habe das Problem gefixt, wenn mir die Hintergründe auch nicht ganz
> klar sind:
> Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor
> Aktualisierung If Text3.Value > 10000 Then MsgBox "Gehalt
> überprüfen!"
> End Sub
> D.h. ich habe das "Beep" gelöscht und die Zeile mit der MsgBox eine
> Zeile höher rangehängt.
das lag an Deiner Bedingung. So wie Du es zuerst formulierst hattest, wurde,
wenn Gehalt größer 10000, ein Beep ausgelöst. Die Zeile mit der MsgBox war
unabhängig von der Bedingung und wurde auf jeden Fall ausgeführt.
Du könntest Deine Code wie folgt ändern:
Private Sub Text3_BeforeUpdate(Cancel As Integer) ' Vor Aktualisierung
If Text3.Value > 10000 Then
Beep
MsgBox "Gehalt überprüfen!"
End If
End Sub
HTH
--
Thomas
Homepage: www.team-moeller.de
TM-VBAZeilenNummerieren: Version 1.20 (seit 20.09.04)
Add-In: Fügt Zeilennummern in VBA-Code ein.
>das lag an Deiner Bedingung. So wie Du es zuerst formulierst hattest,
>wurde,
>wenn Gehalt größer 10000, ein Beep ausgelöst. Die Zeile mit der MsgBox war
>unabhängig von der Bedingung und wurde auf jeden Fall ausgeführt.
Danke für die Erklärung - hab ich gleich mal ausprobiert und jetzt hab ich
das auch richtig verstanden und wieder was dazugelernt :-)
Gruß
Matthias