Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Функция. Управление не доходит до точки входа!
 
 автор: myth   (02.11.2008 в 21:40)   личное сообщение
 
 

Есть функция

Public Function CmpDate(dat1 as Date, dat2 as Date) as Integer
......
....
end function

Вызываю

CmpDate (Text1.Value, Text2.Value)

Если Text1.Value = пустому значению то:
VB страшно материться и даже не доходит до точки входа в функцию. Типо базарит, что нельзя передавать переменные с NULL значениями
Маразм!
Как с ним бороться?
Было бы хорошо все таки попасть в функцию, проверить уже там значения на
 ISNULL(...) 
, сделать еще кучу проверок и возвратить результат.
Что делать?

  Ответить  
 
 автор: Дрюня   (02.11.2008 в 22:06)   личное сообщение
 
 

при вызове функции в нее нужно передавать параметры с типом, который объявлен в этой функции:

i = CmpDate(par1, par2)

а par1, par2 должны иметь тип Date

  Ответить  
 
 автор: myth   (02.11.2008 в 22:17)   личное сообщение
 
 

Делаю..

CmpDate CDate(Tim1.Value), CDate(Tim2.Value)

VB материться и базарить, что Invalid Use of NULL

  Ответить  
 
 автор: Кабан   (03.11.2008 в 09:35)   личное сообщение
 
 

а без .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")) 

  Ответить  
 
 автор: myth   (03.11.2008 в 10:05)   личное сообщение
 
 

Енто хорошо, но как бы с доп. ф-цией и доп проверкой.
Я думал что в VB как в c++ ф-ции все равно чему равны передаваемые значения - NULL или что-то другое.. Вобщем вчера решил проблему - определил входные параметры типом Variant и все заработало, попал в точку входа и уже там обработал.

CmpDate CDate(dat1 as Variant, dat2 as Variant)
 

Эх........ кривизна то какая.......

  Ответить  
 
 автор: час   (03.11.2008 в 13:22)   личное сообщение
 
 

Как бы Вас такой VARIANT не подвёл..........
Как сравниваться будут переданные данные как строки, как числа, как даты или как?
попробуйте передавать данные так:
nz(Data1), nz(Data2)
гли в теле функции написать
If nz(Data1)= 00.00.00 then exit function
или
if isnull(Data1)=true then exit function

или вон как выше предлагает Кабан ....

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList