|
|
|
| Есть функция
Public Function CmpDate(dat1 as Date, dat2 as Date) as Integer
......
....
end function
|
Вызываю
CmpDate (Text1.Value, Text2.Value)
|
Если Text1.Value = пустому значению то:
VB страшно материться и даже не доходит до точки входа в функцию. Типо базарит, что нельзя передавать переменные с NULL значениями
Маразм!
Как с ним бороться?
Было бы хорошо все таки попасть в функцию, проверить уже там значения на , сделать еще кучу проверок и возвратить результат.
Что делать? | |
|
| |
|
|
|
| при вызове функции в нее нужно передавать параметры с типом, который объявлен в этой функции:
i = CmpDate(par1, par2)
а par1, par2 должны иметь тип Date | |
|
| |
|
|
|
| Делаю..
CmpDate CDate(Tim1.Value), CDate(Tim2.Value)
|
VB материться и базарить, что Invalid Use of NULL
| |
|
| |
|
|
|
| а без .Value пробовали?
или так
Public Function nz(a, b)
If IsNull(a) Then
nz = b
ElseIf Len(CStr(a)) = 0 Then
nz = b
Else
nz = a
End If
End Function
'-- вызов, например так
CmpDate CDate(nz(Tim1.Value,"01.04.2008")), CDate(nz(Tim2.Value,"01.04.2008"))
|
| |
|
| |
|
|
|
| Енто хорошо, но как бы с доп. ф-цией и доп проверкой.
Я думал что в VB как в c++ ф-ции все равно чему равны передаваемые значения - NULL или что-то другое.. Вобщем вчера решил проблему - определил входные параметры типом Variant и все заработало, попал в точку входа и уже там обработал.
CmpDate CDate(dat1 as Variant, dat2 as Variant)
|
Эх........ кривизна то какая....... | |
|
| |
|
|
|
| Как бы Вас такой VARIANT не подвёл..........
Как сравниваться будут переданные данные как строки, как числа, как даты или как?
попробуйте передавать данные так:
nz(Data1), nz(Data2)
гли в теле функции написать
If nz(Data1)= 00.00.00 then exit function
или
if isnull(Data1)=true then exit function
или вон как выше предлагает Кабан .... | |
|
| |