vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest niedziela, 15 września 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Warunek i Null


otwartyotwarty rozpoczął: kr postów: 7



napisał: pil
postów: 154


umieszczony:
27 października 2005
12:12

  
Cytat:
Witam
Jeśli chodzi o mnie to do niedawna myślałem że wiem co to jest "null"

Jak do tej pory to próbowałej już:

Data = Null, Data = "", Data = Empty

Rodzi sie pytanie - czym jest ta "wartość"
Bo nie jest - Null, pustym "", ani Empty

Może jeszcze powiem, że wyciągam to z pliku *.mdb
Po otwarciu Accessem pola widoczne są jako puste - niema tam nic

Pozdrawiam Karol

Myślę, że ten fragment z pomocy Excela pokazuje różnicę:
Dim MyVar, MyCheck
MyCheck = IsNull(MyVar)    ' Returns False.

MyVar = ""
MyCheck = IsNull(MyVar)    ' Returns False.

MyVar = Null
MyCheck = IsNull(MyVar)    ' Returns True.

' i IsEmpty
Dim MyVar, MyCheck
MyCheck = IsEmpty(MyVar)    ' Returns True.

MyVar = Null    ' Assign Null.
MyCheck = IsEmpty(MyVar)    ' Returns False.

MyVar = Empty    ' Assign Empty.
MyCheck = IsEmpty(MyVar)    ' Returns True.


Może w Twoim przypadku, żeby skorzystać z funkcji IsNull() należałoby do zmiennej Data przypisać jako wartość startową Null, która mogła by się zmienić w trakcie wykonywania przy zaistnieniu korzystych warunków :), czyli jakoś tak to by mogło wyglądać (ale podałeś trochę mało danych jaką wartość ma przyjmować zmienna):
...
Dim data As 'jakiś typ
...
data = Null
...
If warunek then
   data = JakisWartosc
End If
...
If IsNull(data) then
   MsgBox "puste"
Else
   MsgBox data
End If
...

napisał: kr
postów: 7


umieszczony:
27 października 2005
10:54

  
Witam
Jeśli chodzi o mnie to do niedawna myślałem że wiem co to jest "null"

Jak do tej pory to próbowałej już:

Data = Null, Data = "", Data = Empty

Rodzi sie pytanie - czym jest ta "wartość"
Bo nie jest - Null, pustym "", ani Empty

Może jeszcze powiem, że wyciągam to z pliku *.mdb
Po otwarciu Accessem pola widoczne są jako puste - niema tam nic

Pozdrawiam Karol
napisał: Rycho
postów: 291


umieszczony:
27 października 2005
00:26

  
Witam.
Wydaje się, że błędnie rozumiesz co przedstawia wartość Null.
Cytata z helpa:
"IsNull Function
Returns a Boolean value that indicates whether an expression contains no valid data (Null).
...
The Null value indicates that the Variant contains no valid data. Null is not the same as Empty, which indicates that a variable has not yet been initialized. It is also not the same as a zero-length string (""), which is sometimes referred to as a null string."
oraz
"Variant data type
A special data type that can contain numeric, string, or date data as well as user-defined types and the special values Empty and Null.
"

Rozumiem to tak, że Null jest wartością reprezentującą "nieokreśloną błędną wartość" i próbujesz ją u siebie bezzasadnie zastosować.
Natomiast funkcja IsEmpty sprawdza, czy zmienna została zainicjowana, czyli też tu nie pasuje.

IMHO pozostaje sprawdzanie, pole jest pustym łańcuchem.

pozdrawiam
Rycho
napisał: Trebor
postów: 1209


umieszczony:
26 października 2005
18:39

  
Czy próbowałeś obsłużyć błąd np. tak
On Error GoTo 1
If Data = Null Then
    MsgBox "brak"
Else
    MsgBox Data
End If
Exit Sub
1
MsgBox "Nie jest Null i generuje błąd"



Czy określenie nie ma oznacza że Data jest Empty jeśli tak to może
If Data = Null or Data = "" Then
lub
If Data = Null or Data = Empty Then
napisał: kr
postów: 7


umieszczony:
26 października 2005
17:54

  
Cytat:


Czy możesz napisać jaką wartość przyjmuje wtedy Data?
Jeśli to drugi Msgbox generuje błąd to spróbuj zamienić go na
MsgBox CStr(Data)



Nie chodzi o to jaką wartość przyjmuje gdy jest, ale o to jaką wartość ma jeśli niema, inaczej jak sformułować warunek

jeśli null to...

Jeśli zmienna Data istniej to niema żadnego problemu.

Niestety MsgBox CStr(Data) też generuje błąd - ten sam

Pozdrowionka
napisał: Trebor
postów: 1209


umieszczony:
26 października 2005
17:23

  
Witam
Czy możesz napisać jaką wartość przyjmuje wtedy Data?
Jeśli to drugi Msgbox generuje błąd to spróbuj zamienić go na
MsgBox CStr(Data)
napisał: kr
postów: 7


umieszczony:
26 października 2005
14:41

  
Witam
Mam znowu problemik :(

Mam taki mały programik VBA wyciągający dane z bazy danych
Wszystko jest ok dopóki niema potrzeby filtrowania rekordów
Chodzi mo o zrobienie czegoś takiego :


If Data = Null Then
   MsgBox "brak"
Else
   MsgBox Data
End If



W takim przypadku puste pole nie jest traktowane jako null
bo nie pojawia się "brak"
natomiast zamiast drugiego MsgBoxa jest komunikat :
"Invalid use of Null"

Chodzi mi by zrobić coś co by sprawdzało czy jest Null i (lub) pozwoliło wyświetlić to coś jeśli nie jest Null

Pozdrawiam Karol


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z