[AccessD] Question on preferred coding

Max Wanadoo max.wanadoo at gmail.com
Wed Jan 21 12:13:59 CST 2009


I would probably do something like this:

Private Sub EventSeatA001_BeforeUpdate(Cancel As Integer)
    Dim str As String
    Const conValid As String = "ARCPSN"
    str = Me!ActiveControl
    If InStr(conValid, str) = 0 Then
        MsgBox "The valid choices are 'A' (available), 'R' (reserved),
'C'(chorus/cast), 'P' (pre-sale), 'S' (sold), and 'N' (not available)."
        Me.ActiveControl.Undo
        Cancel = True
    Else
        Call setseatbackcolour
    End If
End Sub

If you are doing this for 100 plus controls you could put it all into one
single routine by setting the Form's OnKeyDown or Onkeypress to the function
The samples shown below are for a Suduko game I wrote some time back, but
show the method you could use.  It avoid 81 different loads for code being
repeated for the 9x9 grid I was using


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  Me!CtlKeyCode = KeyCode
  Call pfKeyPress(KeyCode)
End Sub

Public Function pfKeyPress(intKeyCode As Integer)
  On Error Resume Next
  Dim ctlActive As Control, strname As String
  Dim intRow As Integer, intCol As Integer
  Set ctlActive = Screen.ActiveControl
  strname = Me.ActiveControl.Name
  intRow = Val(Mid(strname, 2, 1))
  intCol = Val(Mid(strname, 4, 1))
  If intKeyCode > 36 And intKeyCode < 41 Then
    Select Case intKeyCode
      Case conLeft
        If intCol > 1 Then intCol = intCol - 1 Else intCol = 9: intRow =
intRow - 1
      Case conRight
        If intCol < 9 Then intCol = intCol + 1 Else intCol = 1: intRow =
intRow + 1
      Case conUp
        If intRow > 1 Then intRow = intRow - 1 Else intRow = 9: intCol =
intCol - 1
      Case conDown
        If intRow < 9 Then intRow = intRow + 1 Else intRow = 1: intCol =
intCol + 1
    End Select
    If intCol < 1 Then intCol = 9
    If intCol > 9 Then intCol = 1
    If intRow < 1 Then intRow = 9
    If intRow > 9 Then intRow = 1
    strname = "R" & CStr(intRow) & "C" & CStr(intCol)
    Me(strname).SetFocus
  End If
  Call sShowHideTips
End Function

Max


-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Bob Gajewski
Sent: 21 January 2009 04:29
To: 'Access Developers discussion and problem solving'
Subject: [AccessD] Question on preferred coding

Hi Folks
 
I have a subform with 100+ fields. I want to change the backcolor of each
field based upon the value entered by the user, after validation.
 
Both of the examples below seem to work fine. Is there a preferred way, or
is one better than the other?
 
Thanks
Bob Gajewski
 
Sample #1
  _____  

Private Sub EventSeatA001_BeforeUpdate(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 Sub

  _____  

Private Sub EventSeatA001_AfterUpdate()
SetSeatBackColor
End Sub

  _____  

 
Sample #2
  _____  

Private Sub EventSeatA001_BeforeUpdate(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
    Else
        SetSeatBackColor
    End If
End Sub

  _____  

  _____  

 
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




More information about the AccessD mailing list