„Access SQL“ datos ir laiko verčių formatavimas „Delphi“.
Getty Images/chokkicx
kada nors patirti tai, kas baisu' Netinkamai apibrėžtas parametro objektas. Buvo pateikta nenuosekli arba neišsami informacija „JET klaida? Štai kaip ištaisyti situaciją.
Kai reikia sukurti SQL užklausą pagal „Access“ duomenų bazę, kurioje naudojama datos (arba datos laiko) reikšmė, turite įsitikinti, kad naudojamas tinkamas formatavimas.
Pavyzdžiui, SQL užklausoje: 'SELECT * FROM TBL WHERE DateField = '10/12/2008', norite gauti visus įrašus iš lentelės pavadinimu TBL, kur bendras datos laukas DateField yra lygus 2008-10-12.
Ar aukščiau esanti linija aiški? Ar tai gruodžio 10 d., ar spalio 12 d.? Laimei, esame tikri, kad užklausos metai yra 2008 m.
Ar užklausos datos dalis turėtų būti nurodyta kaip MM/DD/YYYY arba DD/MM/YYYY, o gal YYYYMMDD? Ir ar regioninės nuostatos čia vaidina svarbų vaidmenį?
MS Access, Jet, datos laiko formatavimas
Kai naudojate Access ir JET ( dbGo – ADO Delphi valdikliai ) SQL formatavimą datos lauką *visada* turėtų būti:
Viskas, kas kita, gali veikti atliekant ribotą testavimą, bet dažnai gali sukelti netikėtų rezultatų arba naudotojo įrenginio klaidų.
Štai tinkinta „Delphi“ funkcija, kurią galite naudoti norėdami formatuoti „Access SQL“ užklausos datos reikšmę.
„1973 m. sausio 29 d.“ funkcija grąžins eilutę „#1973-01-29#“.
Pasiekti SQL datos laiko formatą?
Kalbant apie datos ir laiko formatavimą, bendras formatas yra toks:
Tai: #metai-mėnuo-dienaSPACEvalanda:minute:sekundė#
Kai tik sukursite galiojančią SQL datos laiko eilutę naudodami aukščiau pateiktą bendrąjį formatą ir išbandysite ją naudodami bet kurį iš Delphi duomenų rinkinio komponentų kaip TADOQuery, gausite siaubingą „Netinkamai apibrėžtas parametro objektas. Buvo pateikta nenuosekli arba neišsami informacija“ klaida tiesveikimo laikas!
Aukščiau pateikto formato problema kyla dėl simbolio „:“, nes jis naudojamas parametrams „Delphi“ parametrinėse užklausose. Kaip ir „... WHERE DateField = :dateValue“ – čia „dateValue“ yra parametras, o jam pažymėti naudojamas „:“.
Vienas iš būdų „ištaisyti“ klaidą yra naudoti kitą datos / laiko formatą (pakeiskite „:“ į „.“):
Ir čia yra tinkinta „Delphi“ funkcija, skirta grąžinti eilutę iš datos ir laiko reikšmės, kurią galite naudoti kurdami „Access“ SQL užklausas, kuriose reikia ieškoti datos ir laiko reikšmės:
Formatas atrodo keistai, tačiau bus tinkamai suformatuota datos ir laiko eilutės reikšmė, kuri bus naudojama SQL užklausose!
Štai trumpesnė versija naudojant FormatDateTime rutiną: