Bill Patten
bill_patten at embarqmail.com
Wed Jan 14 01:02:35 CST 2009
Hi Bob, To late at night for me to test this but perhaps it could help you. Have the function return a value (That would also make it a function) If it's false then cancel and undo HTH Bill Code Sample 2 =============================== Private Function isValidStatus() as boolean isValidStatus = True ' Assume OK Dim Cancel As Integer If Me.ActiveControl <> "A" And Me.ActiveControl <> "R" And Me.ActiveControl <> "C" And Me.ActiveControl <> "P" And Me.ActiveControl <> "S" And Me.ActiveControl <> "N" Then MsgBox "The valid choices are 'A' (available), 'R' (reserved), 'C' (chorus/cast), 'P' (pre-sale), 'S' (sold), and 'N' (not available)." isValidStatus = false End If End Function =============================== Code Sample 3 =============================== Private Sub EventSeatA001_BeforeUpdate(Cancel As Integer) if isValidStatus (Me.ActiveControl.Value) = false then Cancel = True Me.ActiveControl.Undo end if End Sub ----- Original Message ----- From: "Bob Gajewski" <rbgajewski at roadrunner.com> To: "'Access Developers discussion and problem solving'" <accessd at databaseadvisors.com> Sent: Tuesday, January 13, 2009 10:46 PM Subject: [AccessD] Request for help with Function Hello Friends I have a form that contains 184 one-character text fields (EventSeatA001, EventSeatA002, etc) - seats in an auditorium. All fields are defaulted to "A". I need to check the value that the user inputs, and if an invalid character was entered, I want to display an error message and return the field to the value from before it was changed. I have the following code in the _BeforeUpdate CBF for each of the 184 fields, and it works just fine. Code Sample 1 =============================== If Me.ActiveControl <> "A" And Me.ActiveControl <> "R" And Me.ActiveControl <> "C" And Me.ActiveControl <> "P" And Me.ActiveControl <> "S" And Me.ActiveControl <> "N" Then MsgBox "The valid choices are 'A' (available), 'R' (reserved), 'C' (chorus/cast), 'P' (pre-sale), 'S' (sold), and 'N' (not available)." Cancel = True Me.ActiveControl.Undo End If =============================== However, I would prefer to put this validation into a Function and just call it in each _BeforeUpdate. This would make maintenance SO much easier. This is where I am struggling. I wrote the Function code and made the call in the _BeforeUpdate ... Code Sample 2 =============================== Private Function isValidStatus() Dim Cancel As Integer If Me.ActiveControl <> "A" And Me.ActiveControl <> "R" And Me.ActiveControl <> "C" And Me.ActiveControl <> "P" And Me.ActiveControl <> "S" And Me.ActiveControl <> "N" Then MsgBox "The valid choices are 'A' (available), 'R' (reserved), 'C' (chorus/cast), 'P' (pre-sale), 'S' (sold), and 'N' (not available)." Cancel = True Me.ActiveControl.Undo End If End Function =============================== Code Sample 3 =============================== Private Sub EventSeatA001_BeforeUpdate(Cancel As Integer) isValidStatus (Me.ActiveControl.Value) End Sub =============================== ... and the validation works fine, but as soon as I click on [OK] on the message box, I get a system error message: Code Sample 4 =============================== Run-time error 13: Type mismatch =============================== If anyone can point me in the right direction, I would very appreciative. Thanks, Bob Gajewski P Please consider the environment before printing this e-mail -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com