Max Wanadoo
max.wanadoo at gmail.com
Mon Feb 9 07:43:10 CST 2009
Hi Stuart, Here are two routines which you may care to look at. The first is to store the value into the .TAG property of the control. The second just parses the controls. Might be of interes, might not, don't know, submitted as is - chuck it if no good. Regards Max Public Function pubFunUpdateTagData(frm As Form) On Error Resume Next ' this puts the data into the tag before any changes are made Dim ctl As Control, z As Variant For Each ctl In frm.Controls With ctl Select Case .ControlType Case acTextBox ' this can hold numbers, strings and dates etc Select Case varType(frm(ctl.Name)) Case 2, 3, 4, 5, 6 ' int,long,single,double,currency frm(ctl.Name).Tag = Val(frm(ctl.Name)) Case 7 frm(ctl.Name).Tag = CStr(frm(ctl.Name)) Case 8 frm(ctl.Name).Tag = frm(ctl.Name) End Select Case acCheckBox frm(ctl.Name).Tag = frm(ctl.Name) Case acComboBox Select Case frm(ctl.Name).RowSourceType Case "Table/Query" frm(ctl.Name).Tag = Nz(frm(ctl.Name).Column(1)) 'MsgBox frm(ctl.Name).Tag Case "Value List" frm(ctl.Name).Tag = Nz(frm(ctl.Name).Column(0, 0)) Case Else End Select Case acListBox frm(ctl.Name).Tag = Nz(frm(ctl.Name).Column(1), "") Case acOptionGroup frm(ctl.Name).Tag = Nz(frm(ctl.Name), 0) End Select End With Next ctl exithere: Exit Function errhandler: MsgBox "Error in MCM_PeopleChanges.pubFunUpdateTagData: " & Err.Number & vbCrLf & Err.Description Resume exithere End Function Private Function RebuildPersonsFlagsFormsControls(frm As Form, lngPID As Long) On Error Resume Next Dim ctl As Control, strDesc As String Dim varSource As Variant, varvalue As Variant, varType As Variant, varName As Variant Dim varVisible As Variant strDesc = frm.Name With frm For Each ctl In frm.Controls varName = ctl.Name varType = ctl.ControlType Select Case varType Case acTextBox varSource = ctl.ControlSource varvalue = ctl.OldValue varVisible = ctl.Visible If Not IsNull(varSource) And Len(varSource) > 0 And _ Not IsNull(varvalue) And Len(varvalue) > 0 And varVisible = True Then Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue, lngPID, conFlagsForms) End If Case acComboBox varSource = ctl.ControlSource varvalue = ctl.OldValue If Not IsNull(varSource) And Len(varSource) > 0 Then Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue, lngPID, conFlagsForms) End If Case acCheckBox varSource = ctl.ControlSource varvalue = ctl.OldValue If varvalue = True Then Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue, lngPID, conFlagsForms) End If Case acOptionGroup varSource = ctl.ControlSource varvalue = ctl.OldValue Call mcmSetFlag(strDesc & ":" & varSource & ":" & varvalue, lngPID, conFlagsForms) Case acSubform Case acLabel Case acBoundObjectFrame Case acPage Case acPageBreak Case acCommandButton Case acCustomControl Case acRectangle Case acImage Case acTabCtl Case acLine Case acToggleButton Case acObjectFrame Case acListBox Case acOptionButton Case Else MsgBox "NewType found in RebuildPersonsFalgsSystemControls:", varType, varName End Select Next ctl End With End Function