Zamiana NULL na wartość 0

0

Witam
jak zwykle mam banalny problem

robie sobie zapytanie sql ktrórego wynikiem jest suma z pól
wszystko jest oki dopóki suma nie ma wartości NULL
wtedy przy pobieraniu wartości za pomocą tego kodu

wyn1:=qrRMW1.FieldByName('ilosc').AsInteger;

dostaje komunikat

'"is not valid integer value

wiem że jest to spowodowane tym ze delphi nie może sobie poradzić z przekształceniem wartości null na wartość 0

co ciekawsze dzieje sie to tylko na bazie mysql 5 na mysql 4 i 3 NIE MA tego błedu

wiec pozostaje pytanie jak zamienic w delphi wartosc null na 0

0
if qrRMW1.FieldByName('ilosc').AsInteger=null then wyn1:=0
else wyn1:=qrRMW1.FieldByName('ilosc').AsInteger;
genius23 napisał(a)

jak zwykle mam banalny problem

Jak zwykle banalna odpowiedź. :-D

0
Ad napisał(a)
if qrRMW1.FieldByName('ilosc').AsInteger=null then wyn1:=0
else wyn1:=qrRMW1.FieldByName('ilosc').AsInteger;
genius23 napisał(a)

jak zwykle mam banalny problem

Jak zwykle banalna odpowiedź. :-D

To raczej tez sie wywali. Proponuje zamienic:

if qrRMW1.FieldByName('ilosc').AsInteger=null

na

if qrRMW1.FieldByName('ilosc')=null
0

nie raczej a na 100%

jeśli to FB/IB/PostgreSQL/MySQL (w 5 jest na 100%) to zmień zapytanie na

SELECT CASE WHEN SUM(pole_ktore_sumujesz) IS NULL THEN 0 ELSE SUM(pole_ktore_sumujesz) END FROM tabela
0

Witam
dzieki wszzystkim za odpowiedź

po glebszej kombinacji zrobiłem to tak

wynik2:=qrRMW1.FieldByName('ilosc').AsString;
if wynik2='' then
wynik:=0
else
wynik:=qrRMW1.FieldByName('ilosc').AsInteger;

przy czym wartosc wynik2 jest typu STRING

Misiekd prawdopodobnie twoje zapytanie bedzie działać , jak znajde czas to go stestuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1