28. juni 2004 - 13:49Der er
10 kommentarer og 1 løsning
Vis et flag på bestemt dato
Jeg skal have vist et flag, når dag og måned passer med dags dato Dette Flag vises når Table1Fdato.text passer præcis på DateTOStr(Date) Altså virker her: begin if Table1Fdato.text = DateToStr(Date) then Flag.Visible :=true
else Flag.Visible :=false ; end;
Nu er det bare sådan, jeg kun vil have dag og måned til at passe med dags dato og ikke år
Når jeg skriver: begin if Table1Fdato.text = DateToStr(Date)+ FormatDateTime('dd-mm', Date) then Flag.Visible :=true
else Flag.Visible :=false ; end;
Virker det ikke! Hvad skal jeg skrive? Table1Fdato.text ser således ud f.eks: 12-06-1965
Det først jeg bemærker er at det ser ud til at du har datoen til at stå i din database som et streng felt. Jeg villle nok i stedet vælge en TDataTime og kun bruge en streng når jeg vil præsentere datoen for en bruger.
Når du har en dato (TDateTime) og du vil splitte denne op i Dag, Månde og År (for at kunne sammenligne 2 mdr og 2 årstal) så bruger du blot (såvidt jeg lige husker) DecodeDate(Dato, Dag, Md, Aar);
Du skriver jo selv "DateToStr(Date)" hvilket tyder på at du har din dato som en TDateTime og i såfald kan du godt bruge "DecodeDate" (prøv evt. at kigge i Delphi's hjælp til DecodeDate").
Problemet med at bruge strenge er at du for begge de 2 datoer (som du vil sammenligne) er nødt til at vide hvordan de er opbygget og så skal du fra disse "plukke" de tegn du ønsker at sammenligne. Evt. noget a'la: if (Copy(DatoStr1, 1, 2) + Copy(DatoStr1, 4,2)) = (Copy(DatoStr2, 1, 2) + Copy(DatoStr2, 4,2))
Hvis du i stedet bruger TDateTime er du fri for at slås med forskellige måder at formatere en dato på (kunne de tænkes at engelsk-sprogede bruger skal bruge dit program så "falder det til jorden" hvis du forventer at datoen er formatret på en bestemt måde)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.