Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Delphi SQL - Chyba pri vyhodnocovaní podmienky alebo zlé zadanie? (where)

Díky za uznání, ale chyba v Delphi (rep. v BDE) není - teda tahle chyba, jiné tam pochopitelně jsou :)).
1) Máš nevhodně navrženou tabulku, je lépe mít datum a čas v jednom poli typu DateTime než extra datum a extra čas - pak by se s výhodou použil predikát BETWEEN.
2) Když už to máš, jak to máš, tak je třeba si uvědomit, že čas je podmnožinou datumu. Podmínka by měla vypadat asi takto:

where ((Datum > :Datum_od) or ((Datum = :Datum_od) and (Cas >= :Cas_od)))   and   ((Datum < :Datum_do) or ((Datum = :Datum_do) and (Cas <= :Cas_do)))'
[původně jsi měl ...(Datum >= :Datum_od)... a ...(Datum <= :Datum_do)... Tak jak jsi to měl, byla podmínka splněna už podle data a čas se nikdy nemohl uplatnit]

3) Nacpat datum a čas v Delpháckém tvaru je jediné správné přes parametry, systém si to přešrotí sám a dobře. Jde to taky cpát textově, ale pak je nutno znásilnit funkce aby převedly datum a čas do amerického formátu yyyy/mm/dd.
4) Necpal bych to textově do Query.SQL [0] ale přímo napsal v editoru do vlastnosti SQL. Když už to cpát programem, tak: Query.SQL.Text := 'select....';

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny