Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kalkulacija vremena sa valutom

[es] :: Pascal / Delphi / Kylix :: Kalkulacija vremena sa valutom

[ Pregleda: 3949 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bobans72

Član broj: 314360
Poruke: 117



Profil

icon Kalkulacija vremena sa valutom01.08.2014. u 02:07 - pre 117 meseci
Pozdrav svima na forumu !

Da li neko zna kako da izračunam ukupno radno vreme sa cenom po satu ?
Pošto sam probao na ovaj način :

[code]
procedure TForm1.Button1Click(Sender: TObject);
var
Time:TTime;
Ukupno,Cena : Currency;
begin
Time:=StrToTime('100:00:00')*24;
Cena:=StrToFloat('1000');
Ukupno:= Time * Cena;
Edit1.Text := FormatFloat('###,##0.00',Ukupno);
end;
[code]

I dobijem grešku: ''100:00:00'' is not a valid time.

Menjao sam (TTime) i (StrToTime) u druge formate ali i dalje je problem '100:00:00'.
A kad postavim da bude vreme '10:00:00' onda dobijem traženi ukupan iznos (10.000,00) ali sa trocifrenim satima nastaje problem.
Da li neko može ispraviti ovu grešku ili postoji neki drugi način za izračunavanje ? Unapred hvala.


Boban
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Kalkulacija vremena sa valutom01.08.2014. u 08:15 - pre 117 meseci
Odakle vučeš podatak o vremenu? Tj. o satima?
Normalno je da ti daje grešku jer TTime ne može imati vrijednost 100 sati, može max 24.
F
 
Odgovor na temu

ravni

Član broj: 8894
Poruke: 373



+15 Profil

icon Re: Kalkulacija vremena sa valutom01.08.2014. u 09:00 - pre 117 meseci
Koliko se moze napabirciti iz ostataka dokumentacije za Delphi TTime podrzava do 24 sata.
Mozes da probas
• da nadjes neku biblioteku za rad za datumima/vremenskim intervalima ili
• da rucno parsiras taj string (100:00:00) ili
• da promenis GUI pa da u jednom polju dobijes sate a u drugom minute i onda normalizujes minute:
ukupnoSati = brojSati + broj minuta / 60
 
Odgovor na temu

bobans72

Član broj: 314360
Poruke: 117



Profil

icon Re: Kalkulacija vremena sa valutom01.08.2014. u 10:54 - pre 117 meseci
Pozz

Mislite kako sam došao do trocifrene sate (100:00:00).
Evo ovako:

Code:
// Ukupno radnih sati
 function Sati_Sec( Sati:string ):LongInt;
Var Sat,Min,Sec:LongInt;
begin
 Sati[Pos(':',Sati)]:= '[';
 Sati[Pos(':',Sati)]:= ']';
 Sat := StrToInt(Copy(Sati,1,Pos('[',Sati)-1));
 Min := StrToInt(Copy(Sati,Pos('[',Sati)+1,(Pos(']',Sati)-Pos('[',Sati)-1)));
 if Pos(':',Sati) > 0 then
    Sec := StrToInt(Copy(Sati,Pos(']',Sati)+1,(Pos(':',Sati)-Pos(']',Sati)-1)))
 else
    Sec := StrToInt(Copy(Sati,Pos(']',Sati)+1,2));
 Result := Sec + (Sat*3600) + (Min*60);
end;
 function Sec_Sati( Sec:LongInt ):string;
Var Sati,Min:LongInt;
  Tmp : Double;
begin
 Tmp := Sec / 3600;
 Sati := Round(Int(Tmp));
 Sec :=  Round(Sec - (Sati*3600));
 Tmp := Sec / 60;
 Min := Round(Int(Tmp));
 Sec :=  Round(Sec - (Min*60));
 Result := FormatFloat( '00', Sati )+ ':' + FormatFloat( '00', Min ) + ':' + FormatFloat( '00', Sec );
end;
procedure TForm1.Button3Click(Sender: TObject);
var
Total:Integer;
begin
Total:=0;
TablePrijavaOdjava.DisableControls;
TablePrijavaOdjava.First;
while not TablePrijavaOdjava.EOF do
begin
   Total := Total + Sati_Sec( TimeToStr(TablePrijavaOdjava.FieldByName('Ukupno_sati').AsDateTime));
  TablePrijavaOdjava.Next;
end;
TablePrijavaOdjava.EnableControls;
 UkupnoEdit1.Text :=(sec_Sati(Total));

end;
// Kraj ukupno sati


Što znači sabiranjem kolone (ukupno_sati) dobijene kalkulacijom prijave i odjave dobijem trocifrene sate
koje posle ovim kodom
Code:
//Ukupno radno vreme puta cena
Procedure TForm1.Button1Click(Sender: TObject);
var
Time:TTime;
Ukupno,Cena : Currency;
begin
Time:=StrToTime('100:00:00')*24;
Cena:=StrToFloat('1000');
Ukupno:= Time * Cena;
Edit1.Text := FormatFloat('###,##0.00',Ukupno);
end;
//Kraj ukupno isplata

trebam dobiti (Ukupno radno vreme) pomnoženo sa cenom po satu i da dobijem iznos za isplatu.
E sad gde mi je greška nemogu pronaći.

Boban
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Kalkulacija vremena sa valutom01.08.2014. u 11:19 - pre 117 meseci
Koliko vidim, varijabla Time ti slobodno može biti tipa Currency i onda nema problema.
F
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Kalkulacija vremena sa valutom01.08.2014. u 16:33 - pre 117 meseci
Nemoj da konvertujes u string uopste, nego odradi nesto ovako:

Code:

var
  total_time: TDateTime;
begin
  total_time := 0;
  while not TablePrijavaOdjava.EOF do
  begin
    total_time := total_time + TablePrijavaOdjava.FieldByName('Ukupno_sati').AsDateTime;
    TablePrijavaOdjava.Next;
  end;

  ...
 
Odgovor na temu

bobans72

Član broj: 314360
Poruke: 117



Profil

icon Re: Kalkulacija vremena sa valutom02.08.2014. u 00:50 - pre 117 meseci
Ne vredi i dalje isto mogu menjati bilo koju varijablu tipa TDateTime ili pak tipa Currency opet
izbacuje istu grešku da nije validno vreme ('100:00:00') te ga ne može izračunati. Nebitno da li je
100 sati ili 50 sati svako ukupno vreme koje prelazi 24 sata nije validno.
Da li ima još neko rešenje kako to mogu izračunati ?
Jer uz pomoć onih dveju funkcija mi izračunava ukupno vreme kako treba i npr. upiše u EDIT-U onih ('100:00:00'),
ali iz EDIT-A neće da pomnoži ni sa jednim brojem ili kako je kod mene sa cenom po satu.
Evo opet koda:
Code:

//Ukupno radno vreme puta cena
Procedure TForm1.Button1Click(Sender: TObject);
var
Time:TTime;
Ukupno,Cena : Currency;
begin
Time:=StrToTime(Edit1.Text)*24; //Sabira iz kolone i upisuje ukupno sati npr:25:00:00 ili 100:00:00 ne prihvata kada se pomnoži sa cenom
Cena:=StrToFloat(Edit2.Text); //Cena po satu '1000'
Ukupno:= Time * Cena;
Edit1.Text := FormatFloat('###,##0.00',Ukupno);
end;
//Kraj ukupno isplata
Ima li načina ?

Boban
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Kalkulacija vremena sa valutom02.08.2014. u 10:47 - pre 117 meseci
Ima, konvertujes vreme u sekunde i tako sabiras, na kraju podelis da dobijes broj sata.
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
*.dynamic.isp.telekom.rs.



+31 Profil

icon Re: Kalkulacija vremena sa valutom02.08.2014. u 12:11 - pre 117 meseci
Da li nesto ovako odgovara tvoim potrebama
Prikačeni fajlovi
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Kalkulacija vremena sa valutom02.08.2014. u 17:48 - pre 117 meseci
Nemoj raditi sa time varijablom, uzmi samo ovaj dio "100" i stavi to u currency varijablu i pomnoži, i to je to.
F
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Kalkulacija vremena sa valutom02.08.2014. u 18:31 - pre 117 meseci
Napraviste od prostog problema komplikovani...

Prvo, postavka ti je losa, jer TDateTime nije namenjen da cuvas vremenski interval. Dakle, u koraku gde racunas radne sate (odjava - prijava), umesto sto to cuvas kao TDateTime, cuvaj u sekundama. Kasnije ti se sve svodi na sabiranje tih kolona i deljenje.

Ako ovo ne mozes da uradis, onda pogledaj DecodeTime() funkciju koja razdvaja TDateTime na h/m/s/msec komponente. Prilikom citanja iz baze, pozovi DecodeTime(), onda sabiraj sate, ili sve u sekundama, pa kasnije izvlaci zaokruzenu vrednost.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
..ppoe.dyn.broadband.blic.net.



+62 Profil

icon Re: Kalkulacija vremena sa valutom03.08.2014. u 12:11 - pre 117 meseci
Mozda je ovde problem ne-poznavanje internog formata TTime/TDateTime formata.

Tip podatka TTime/TDateTime je prosti double. Sad, neka je Time varijabla tipa TTime.
Po konvenciji,

Code:
  Time := 1.0;

predstavlja interval od 1 dana (day). Pa shodno tome,
Code:
  Time := 1.0 / 24.0;
je interval od 1 sata (hour), itd. i na kraju se dodje do sekunde
Code:
  Time := 1.0 / (24.0 * 60.0 * 60.0);


Zaobidji string konverzije, nepotrebne su.
I da, vazi primedba da tipovi TTime/TDateTime NISU predvidjeni za smestanje intervala, vec tacke u vremenu; zato stavi prosto Time: double; i sve ce raditi kako treba.

Pozz
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kalkulacija vremena sa valutom

[ Pregleda: 3949 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.