Ну, это продолжение в другой ветке.
У меня есть Person
таблица с несколькими полями
Таблица представлена пользователю тремя различными способами:
1) в виде таблицы данных
2) в виде таблицы
3) в виде отчета (без изображения, но аналогично техническому описанию)
В форму добавлен специальный тег §Person§
, для выбора основной прикрепленной таблицы
Также существует запрос, возвращающий ошибки и правила их форматирования для каждого field
в заданном table
вот фрагмент кода, который я использовал бы для определения условного форматирования для каждой формы, отчета, таблицы данных, когда они загружены.
Private Sub Form_Open(Cancel As Integer)
Call validazione.validate(Form)
End Sub
Function validate(aForm As Form)
Call DeleteFormats(aForm) ' to remove existing formats
Call setFormats(aForm) ' to insert the new formats
End Function
Подставка setFormat имеет следующий вид:
Sub setFormats(aForm As Form)
Dim TableName As String, t() As String, ErrSQL As String, ctlName As String
Dim ErrRst As DAO.Recordset, FormCtl As Control, ctl As Variant
Dim frmtCount As Integer, Cnt As Integer
Dim fcdSource As FormatCondition, fcdDestination As FormatCondition
Dim varOperator As Variant, varType As Variant, x As Variant, y As Variant
Dim varExpression1 As Variant, varExpression2 As Variant
Dim intConditionCount As Integer, intCount As Integer
If Len(aForm.Tag) > 0 And Mid$(aForm.Tag, 1, 1) = "§" Then
t = Split(aForm.Tag, "§", 1)
If Len(t(0)) > 0 Then TableName = t(0)
TableName = Replace(TableName, "§", "")
ErrSQL = "SELECT * FROM [Q Errori per tabella] WHERE ([TableName] = """ & TableName & """);"
Set ErrRst = CurrentDb.OpenRecordset(ErrSQL, , dbReadOnly)
If ErrRst.EOF Then Exit Sub
' ***IT RUNS UNTIL HERE***
FormCtl = aForm.Controls("CAP")
y = aForm.Properties(ctlName).Item("Codice Fiscale")
With ErrRst
.MoveFirst
Do Until .EOF
x = ErrRst.Fields("FieldName")
Debug.Print x
' On Error GoTo fine
FormCtl = aForm.Controls("CAP")
FormCtl = aForm.
On Error GoTo 0
If FormCtl.ControlType = acTextBox Or FormCtl.ControlType = acComboBox Then
' Add the FormatCondition
Cnt = FormCtl.FormatConditions + 1
FormCtl.FormatConditions.Add acExpression, , .Fields.Item(Cnt).Value
' Reference the FormatCondition to apply formatting.
' Note: The FormatCondition cannot be referenced
' in this manner until it exists.
Set fcdDestination = ctl.FormatConditions.Item(Cnt).Value
With FormCtl.FormatConditions.Item(Cnt)
.BackColor = Eval("RGB" & ErrRst.item("Sfondo").value)
' .FontBold = fcdSource.FontBold
' .FontItalic = fcdSource.FontItalic
' .FontUnderline = fcdSource.FontUnderline
.ForeColor = Eval("RGB" & ErrRst.item("pen").value)
End With
End If
fine: On Error GoTo 0
' Next x
.MoveNext
Loop
End With
End If
End Sub
*** Ну, это выглядит странно, но моя проблема в том, как получить доступ к полю формы, или столбцу отчета, или столбцу таблицы данных by name
.
Кроме того, мне бы хотелось иметь только одну функцию для управления всеми тремя опциями: Форма, Отчет и Таблица данных.
Кто-нибудь может помочь?
ТИА
Paolo