ник: Alex
Думаю, что Вас спасет вот это:
Ситуация обычная:
В подчиненной форме создаем скрытое поле [MyTotal], источником данных которого является что то вроде:
=Sum([Всего])
теперь создаем поле в главной форме с источником данных:
=[Название Объекта Подчиненной формы].[Form]![MyTotal]
и все замечательно - при условии что в ПОДЧИНЕННОЙ ФОРМЕ ЕСТЬ ДАННЫЕ
а если их нет - то в поле будет #Ошибка
Приведенная ниже функция как раз и служит для устранения данной неприятности
Пишем в источнике данных:
=FData([Название Объекта Подчиненной формы].[Form]![MyTotal])
и при отсутствии данных в поле будет просто 0 (ноль)
В глобальном модуле создаем функцию:
' Устраняет #Ошибка при отсутствии данных
Function FData(anyVal As Variant) As Currency
On Error GoTo FDataErr
FData = CCur(anyVal)
Exit Function
FDataErr:
FData = 0
Err.Clear
End Function
Пример использования:
Поле1=FData([Поле2])*[Поле3]
Поле4=FData([Поле5])*[Поле6]
Поле5=Поле1+Поле4
Если не использовать эту функцию, то при отсутствии данных в Поле1 или Поле4, Поле5 будет содержать #Ошибка
Пользовательские варианты:
Function FDataDate(anyVal As Variant) As Date
On Error GoTo FDataDateErr
FDataDate = CCur(anyVal)
Exit Function
FDataDateErr:
FDataDate = 0
Err.Clear
End Function
Function FDataLong(anyVal As Variant) As Long
On Error GoTo FDataLongErr
FDataLong = CCur(anyVal)
Exit Function
FDataLongErr:
FDataLong = 0
Err.Clear
End Function
Function FDataDouble(anyVal As Variant) As Double
On Error GoTo FDataDoubleErr
FDataDouble = CCur(anyVal)
Exit Function
FDataDoubleErr:
FDataDouble = 0
Err.Clear
End Function
Function FDataC(anyVal As Variant) As Currency
On Error GoTo FDataCErr
FDataC = CCur(anyVal)
Exit Function
FDataCErr:
FDataC = 0
Err.Clear
End Function