Hallo zusammen.
Ich arbeite mit einem Access-Projekt und möchte eine Dateneingabe über ein Formular durchführen. Es wird ein Mitarbeiter ausgewählt und in ein Feld soll eine Anzahl an Stunden eingegeben werden, die dieser steuerfrei für den entsprechenden Monat ausbezahlt bekommen soll. Da das Kontingent des steuerfreien Betrags pro Jahr vom Gesetzgeber vorgeschrieben ist, darf hier natürlich nichts mehr eingegeben werden können, wenn das Kontingent verbraucht ist. Aus einer Abfrage bekomme ich das bereits verbrauchte Kontingent sowie die noch verfügbaren, abzubauenden Stunden über dieses Kontingent für das laufende Jahr...also den sogenannten Max-Wert für mein Formularfeld. Wie binde ich diesen Max-Wert in das Formularfeld ein, so dass er automatisch bei Auswahl der Personalnummer vorgeschlagen wird und keine höhere Eingabe zulässt ?
Gruß
Karsten
Hallo Karsten,
ZitatWie binde ich diesen Max-Wert in das Formularfeld ein, so dass er automatisch bei Auswahl der Personalnummer vorgeschlagen wird und keine höhere Eingabe zulässt ?
Me!DeinFeld = DeinMaxWertDazu musst Du nur das passende Ereignis finden.
Wobei sich die Frage stellt, ob das Feld immer nur
einmal bei der Neuanlage eines DS editiert wird,
oder ob Eingaben auch verändert werden können.
Falls Ersteres vielleicht in Form_Current mit Überprüfung
auf Me.NewRecord
If Me.NewRecord then
Me!DeinFeld = DeinMaxWert
End IfAnsonsten vielleicht DeinFeld_GotFocus.
Zum Abfangen einer höheren Eingabe:
Private Sub DeinFeld_BeforeUpdate(Cancel As Integer)
If Me!DeinFeld.Text > DeinMaxWert Then
MsgBox "Wert zu hoch! Höchstens " & DeinMaxWert & " Stunden zulässig"
Cancel = True
End If
End Sub(Alles Luftcode)
hth
gruss ekkehard
Hallo Ekkehard.
Habe mal mit Deinem Code etwas rumprobiert. Allerdings weiß ich noch nicht, wie ich den MaxWert in das Formularfeld bekomme. Der Mitarbeiter (bzw. seine Personalnummer) wird über ein Kombifeld ausgewählt. Nun sollte das Feld, das den MaxWert anzeigen soll, diesen aus einer bereits existierenden Abfrage holen und der Wert zu der ausgewählten Personalnummer passen. In der besagten Abfrage existiert zu jeder Personalnummer ein Datensatz mit einem MaxWert. Ich weiß...Du hast mir hier schon eine Vorlage gegeben...allerdings bin ich am Rätseln, wie ich den Wert aus der Abfrage dort hineinbekomme ? ???
Gruß
Karsten
Hallo,
halt etwa so im Steuerelementinhalt eines Textfeldes:
=DomWert("MaxWert","abf_DeineAbfrage","Personalnummer='" & [Personalnummer] & "'" )
wobei Personalnummer das Feld in der Abfrage mit Datentyp TEXT und Personalnummer das Formulartexfeld ist, das die aktuelle Personalnummer enthält.
Hat Personalnummer den Datentyp Zahl, Long, dann müssen die Hochkommata entfallen.
Hallo und Danke, Franz.
Habe es zwischenzeitlich mit einem DLookup probiert und es funktioniert wenigstens schon mal so weit, dass ein Wert vorgeschlagen wird. Allerdings ist das immer der erste MaxWert aus dem DS der Abfrage und nicht der zu der im Kombifeld des Formulars ausgewählten Personalnummer passende MaxWert.
Ich habe folgende Ereignisprozedur für das Kombifeld, über das der Mitarbeiter ausgewählt wird, geschrieben :
Private Sub Kombi_AfterUpdate()
Me!MaxWertFeld = DLookup("entsprichtStunden", "UebungsleiterPauschaleLJSum")
End Sub
Was muss ich wohl noch ändern ?
Gruß
Karsten
Hallo,
habe das doch ausführlich und auch noch farbig dargestellt ::)
Sorry Franz.
Funktioniert mit dem DLookup und Deiner Erweiterung mit der Personalnummer einwandfrei.
DANKE !!!
Gruß
Karsten
Hallo Franz,
Zitathalt etwa so im Steuerelementinhalt eines Textfeldes:
Würde ich nicht machen, da das Feld dann nur zur Anzeige/Weiterverarbeitung
taugt, aber nicht editiert werden kann, also ein
zusätzliches Control
ist.
IMO besser das Feld per Code vorzubelegen, DomWert ( = DLookup in VBA)
stehen dem ja nicht entgegen.
gruss ekkehard
Hallo,
prinzipiell stimmt das schon, und je nachdem, was man vorhat, muss/kann man sich für eine Methode entscheiden. Wenn wie anfänglich gesagt wurde, dieser Wert lediglich ein Vergleichswert sein soll, darf er eben nicht editierbar sein, sondern nur für die Überprüfung des eingebenen Wertes dienen. (Sofern ich das Vorhaben so richtig verstanden habe... )
Hallo Franz,
Zitatso dass er automatisch bei Auswahl der Personalnummer vorgeschlagen wird
Wie man's sieht ;)
gruss ekkehard