jwcolby
jwcolby at colbyconsulting.com
Wed Jan 14 17:00:42 CST 2009
Did this work? I have seen no traffic at all on AccessD today. John W. Colby www.ColbyConsulting.com jwcolby wrote: > It sounds like your problem is the "activecontrol" part. I > am guessing that the focus leaves the control and is placed > on the command button BEFORE the BeforeUpdate runs and thus > the command button is being validated, which would not be > correct. > > Pass in the control itself, then inside of the function look > at the control.value. > > function Validate(ctl as control) > if ctl.value = XXX then > Do something > else > so something else > endif > end function > > Call that from the Before update. > > if Validate(ThisCtl) then > else > endif > > Doing it this way leaves no ambiguity as to what control is > being validated. > > John W. Colby > www.ColbyConsulting.com > > > Bob Gajewski wrote: >> 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 >>