PDA

Vollständige Version anzeigen : Eingabe im Formular prüfen


quaks
25.06.2001, 13:56
Hallo,

Ich habe ein DB erstellt, in der die Stunden unserer Mitarbeiter pro Kostenstelle und evtl. Auftragsnummern erfasst werden soll. Ich möchte folgende Möglichkeiten von Fehleingaben einschränken:
Es gibt Kostenstellen, die nur gemeinsam mit einer Auftragsnummer erfasst werden sollen. Wenn die Auftragsnummer größer als 100000 isst soll gepüft werden, ob die Auftragnummer in der hinterlegten Tabelle vorhanden ist und ob die dort angegebene Kostenstelle mit der gerade eben erfassten übereinstimmt.

Leidern reichen meine Access-Kenntnisse nicht bis hierher. Kann mir jemand helfen?
Ich hab zwar gerade eine "Lernsoftware" durchgearbeitet, von der ich auch was gelernt habe - aber die endet leider auch hier ;-)

Gruß
Sandra

Kurt aus Kienitz
25.06.2001, 14:30
Hallo,

Würde es nicht ausreichen, bei Angabe einer Auftragsnummer die entsprechende Kostenstellennummer vorzubelegen ?


Private Sub AuftrNr_Exit()

Dim vVar As Variant

If Me.AuftrNr > 100000 Then
vVar = DLookup("[Kostenstelle]","Auftraege";"[AuftragNr]=" & Str$(Me.AuftrNr))
If Not IsNull(vVar) Then Me.Kostenstelle = vVAr
End if
End Sub


Warum soll man denn erst prüfen, einen Fehler feststellen und den Benutzer dann auffordern die Angabe der Kostenstelle zu korregieren, was meinst Du ?

quaks
25.06.2001, 15:44
mhhh gute Frage - auf den ersten Blick eigentlich nichts - auf den zweiten ....
es müsste zumindest eine Meldung erscheinen, dass die Kostenstelle geändert wurde und es müsste die Möglichkeit bestehen diese geänderte wieder zu überschreiben ....
da - die Mitarbeiterin die die Auftragsnummern vergibt und erfasst es mit der Kostenstellenangabe nicht immer so genau nimmt - vllt auch weil ihr wiederrum die Angaben fehlen .... - und um die Handgeschriebenen Stundenzettel zu ändern - und wenn unsere lieben Mitarbeiter mal wieder etwas pennen und ständig die gleichen Fehler machen sie nett drauf hinzuweisen ....

also wenn wir das denn auch noch so hinkriegen - wär ich echt begeistert ;)

Sandra

Kurt aus Kienitz
25.06.2001, 16:02
Hallo nochmal,

Also mit Prüfung und Fehlermeldung :)


Private Sub AuftrNr_Exit()

Dim vVar As Variant

If Me.AuftrNr > 100000 Then
vVar = DLookup("[Kostenstelle]","Auftraege";"[AuftragNr]=" & Str$(Me.AuftrNr))
If Not IsNull(vVar) Then

If not IsNull(Me.Kostenstelle) AND _
Me.Kostenstelle <> vVar Then

MsgBox "Fehlerhafte Kostenstelle"

End if
Me.Kostenstelle = vVAr
End If
End If
End Sub

quaks
25.06.2001, 16:52
grmmpf

ich nochmal
so sieht das jetzt bei mir aus:

Private Sub AuftragsNr_Exit(Cancel As Integer)
Dim vVar As Variant
If Me.AuftragsNr > 100000 Then
vVar = DLookup("[KTR]", "interne Projektnummern", "[Projekt-Nr]=" & Str$(Me.AuftragsNr))
If Not IsNull(vVar) Then

If Not IsNull(Me.KTR) And _
Me.KTR <> vVar Then
MsgBox "Fehlerhafter Kostenträger"
End If
Me.KTR = vVar
End If
End If

End Sub


und er meckert jetzt rum das sich hier irgendwelche Typen nicht vertragen und markiert Me.KTR

Me.KTR <> vVar Then

*schnief* *heul*

Sandra

Kurt aus Kienitz
25.06.2001, 18:51
Hallo Sandra,

Ich habe mir folgende Tabelle angelegt:
interne Projektnummern
KTNR, Zahl, Long Integer
Projekt-Nr, Zahl, Long Integer

Dann ein Formular mit zwei Textfeldern.
Eines heißt KTNR und eines AuftragsNr.

Die Ereignisprozedur Beim Verlassen des Textfeldes AuftragsNr sieht so aus:

Private Sub AuftragsNr_Exit(Cancel As Integer)

Dim vVar As Variant

If Me.AuftragsNr > 100000 Then

vVar = DLookup("[KTNR]", "interne Projektnummern", "[Projekt-Nr]=" & Str$(Me.AuftragsNr))
If Not IsNull(vVar) Then

If Not IsNull(Me.KTNR) And Me.KTNR <> vVar Then
MsgBox "Fehlerhafte Kostenstelle"
End If

Me.KTNR = vVar

End If


End If

End Sub

So funktioniert es einwandfrei.

Wenn Du mit deine E-Mail Adresse verrätst, schicke ich Dir mal meine Test-DB zu.