Pola z tablei z ktorych korzystam to:
Table2Ilosc: TFloatField;
Table2Cena_jedn: TCurrencyField;
Table2St_VAT: TStringField;
Procedurka wyglada tak:
procedure TFaktura.PodliczWartosc;
var
Wartosc: Currency;
VAT : Currency;
CenaNetto : Currency;
Suma : Currency;
begin
Wartosc:=0;
repeat
if Table2['St_VAT']='zw' then
begin
VAT:=0;
end;
if not Table2['St_VAT']='zw' then
begin
VAT:=Table2['St_VAT'];
end;
Suma:= ( (Table2['Cena_jedn'] * Table2['Ilosc']) + ((Table2['Cena_jedn'] *
Table2['Ilosc'])*VAT) );
Wartosc:=Wartosc+Suma;
Table2.Next;
until (Table2.EOF);
Razem.Text:=CurrToStr(Wartosc);
end;
Kompilator nic nie wyrzuca, jednak jak w programie chce otworzyc forme na
ktorej wynik sie wyswietla otrzymuje MSG : Invalid variant type conversion.
Czemu?
P.
Acha, na usenecie uzyskalem odpowiedz , uzywaj jawnie typow, ale mi to nic nie mowi, jak to w kodzie powinno wygladac?
<qoute>Acha, na usenecie uzyskalem odpowiedz , uzywaj jawnie typow, ale mi to nic nie mowi, jak to w kodzie powinno wygladac?</quote>
A przecież na początku sam zdefiniowałeś pola tabeli.
No to teraz ich używaj
<Pola z tablei z ktorych korzystam to:
Table2Ilosc: TFloatField;
Table2Cena_jedn: TCurrencyField;
Table2St_VAT: TStringField;</qoute>
Taki jaki typ reprezentują te pola takie zawierają wartości (FloatField -> float, CurrencyField -> currency itd.)
Zatem w twoim kodzie powinno być np.
if Table2St_VAT='zw' then ........
VAT:=StrToInt(Table2St_VAT); // o ile w tym polu zapisane jest np. '22'
lub
if Table2.FieldByName('St)Vat').AsString='zw' then ...
ale ten pierwszy sposób jest bardziej przejrzysty
Zatem w twoim kodzie powinno być np.
if Table2St_VAT='zw' then ........ -<<<< nie przyjmie bez .value
teraz tak mam, ale wysakuje cos z pointerem i float
var
Wartosc: Currency;
VAT : Currency;
CenaNetto : Currency;
Suma : Currency;
begin
Wartosc:=0;
repeat
if Table2St_VAT.Value='zw' then
begin
VAT:=0;
end
else
begin
VAT:=StrToCurr(Table2St_VAT.value);
end;
Suma:= ( ( Table2Cena_jedn.value * Table2Ilosc.value ) + ((Table2Cena_jedn.value * Table2Ilosc.value)*VAT) );
Wartosc:=Wartosc+Suma;
Table2.Next;
until (Table2.EOF);
Razem.Text:=CurrToStr(Wartosc);
P.