[ gygy @ 22.01.2005. 21:57 ] @
DBEdit1.Text := FormatDateTime('dd.mm.yyyy', strtofloat(Edit1.text));
unosim u Edit1 (ova procedura stoju u edit1Exit) i nakon izlaska zelim da mi ako je datum napisan 1.1.05 napise 01.01.2005 ili 8.08.04 napise 08.08.2004. Tj da testira datum pri izlazu iz Edit1.
Kako da ovo resim?
Hvala!!!
[ iggac @ 22.01.2005. 22:39 ] @
Citat:
nakon izlaska zelim da mi ako je datum napisan 1.1.05 napise 01.01.2005 ili 8.08.04 napise 08.08.2004


Ako u Edit box napises datum u obliku 1.1.05 onda ne mozes koristiti funkciju StrToFloat vec StrToDate jer ne mozes konvertovati '.' u float podatak.
[ _v!rus_ @ 22.01.2005. 23:16 ] @
Ako windows locale je podesen na neki drugi ShortDate Format (tipicno US English m/d/y) onda ni StrToDate nece raditi (hoce za 01.01.2004, ali 02.01.2004 ce mu biti 1. FEBRUAR, a za 13.1 ce prijaviti gresku). Fora je napraviti f-ju koja cita karaktere stringa i koriscenjem EncodeDate(D, M, G: Word) vraca TDate, pa posle ide FormatDateTime('dd.MM.yyyy', NekiDatum).
[ gygy @ 22.01.2005. 23:20 ] @
Sad ferca!
Hvala!
Ali imam jos jedan problem prilikom filtriranja!
koristim ovaj kod ali nesto nije u redu.
ovaj edit2.text := dbedit1.text
Code:
...
procedure TForm1.Button1Click(Sender: TObject);
begin
    ClientDataSet1.Filtered := True;
    ClientDataSet1.Filter := 'Datum'+'='''+Edit2.text+'*'''  ;

end;
...

Kako jos da filtriram bazu (b1.xml-baza) po datumu?
Hvala
[ bancika @ 22.01.2005. 23:37 ] @
da bi parsovao datum moze recimo ovako (pretpostavka da je razmak tacka)
Code:

function MyStrToDate(s: string): TDate;
var d, m, y: string;
begin
  try
  d := StrToInt(Copy(s, 1, Pos('.', s) - 1);
  Delete(s, 1, Pos('.', s));
  m := StrToInt(Copy(s, 1, Pos('.', s) - 1);
  Delete(s, 1, Pos('.', s));
  y := StrToInt(Copy(s, 1, Pos('.', s) - 1);
except
  Exit;
end;
  Result := EncodeDate(d, m, y);
end;

mozda nije bas sve ispravno, posto je iz glave ali bi trebalo da je tako
[ gygy @ 24.01.2005. 15:23 ] @
Hvala momci resio sam ovo pomocu 'Regional options'
ali imam jedan problem sa sortiranjem kako da sortiram i po datumu i po sifri?
Mogu da sortiram samo po datumu...
ClientDataSet1.IndexName := 'Datum';
...
ili samo po sifri...
ClientDataSet1.IndexName := 'Sifra';
...ClientDataSet1.IndexDefs imam definisane 0-Datum i 1-Sifra.
Kako ovo da resim?
Hvala
[ _v!rus_ @ 27.01.2005. 19:51 ] @
Sa TQuery-em:
TQuery.SQL.Text := 'SELECT * FROM tvojatabela ORDER BY SIFRA, DATUM';
ili
TQuery.SQL.Text := 'SELECT * FROM tvojatabela ORDER BY DATUM, SIFRA';
zavisi sta ti treba.

A za datum nisi hteo da me poslusas pa si morao da menjas regional settings. Znaci jos jednom, da bi ti datum radio na BILO KOM reg. settingu MORAS izdvojiti iz stringa posebno dan, mesec i godinu i encodovati datum da bi dobio TDate, pa onda filtriras tabelu:
'Datum = ' + QuotedStr(DateTimeToStr(MojDatum));
DateTimeToStr ce uvek postovati system locale, tome inace i sluzi. Jedino treba da napises f-ju koja parsira datum (string) i vraca datum(TDate) ili uzmi bancikinu f-ju.

I jos nesto, ako radis sa TDBEdit, imas na raspolaganju posebno EditFormat a posebno DisplayFormat. Npr, za DisplayFormat stavis [dd.MM.yyyy], a za edit format stavis [d.M.yyyy], tako ce DBEdit uvek prikazivati dvocifren dan i mesec, onda ne treba da izmisljas svoju funkciju ni menjas locale. EditFormat i DisplayFormat su property-i TField-a.