podliczenie na formie kwoty (z pol z table1)

0
 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?
 

0

<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

0

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.

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