Datuma un laika vērtību formatēšana Access SQL programmā Delphi
Getty Images/chokkicx
Kādreiz iegūt šausmīgo Parametra objekts ir nepareizi definēts. Tika sniegta nekonsekventa vai nepilnīga informācija JET kļūda? Lūk, kā labot situāciju.
Ja jums ir jāizveido SQL vaicājums attiecībā uz Access datu bāzi, kurā tiek izmantota datuma (vai datuma laika) vērtība, jums jāpārliecinās, vai tiek izmantots pareizais formatējums.
Piemēram, SQL vaicājumā: 'SELECT * FROM TBL WHERE DateField = '10/12/2008', jūs vēlaties iegūt visus ierakstus no tabulas ar nosaukumu TBL, kur vispārīgais datuma lauks DateField ir vienāds ar 10/12/2008.
Vai augšā esošā līnija ir skaidra? Vai tas ir 10. decembris vai 12. oktobris? Par laimi, mēs esam diezgan pārliecināti, ka vaicājuma gads ir 2008.
Vai vaicājuma datuma daļai ir jānorāda kā MM/DD/GGGG vai DD/MM/GGGG vai varbūt GGGGMMDD? Un vai reģionālajiem iestatījumiem šeit ir nozīme?
MS Access, Jet, datuma un laika formatēšana
Lietojot Access un JET ( dbGo — ADO Delphi vadīklas ) SQL formatējumu datuma lauks *vienmēr* jābūt:
Jebkas cits var darboties ierobežotā testēšanā, taču bieži vien var izraisīt negaidītus rezultātus vai kļūdas lietotāja ierīcē.
Šeit ir pielāgota Delphi funkcija, ko varat izmantot, lai formatētu Access SQL vaicājuma datuma vērtību.
“1973. gada 29. janvārim” funkcija atgriezīs virkni “#1973-01-29#”.
Vai piekļūt SQL datuma un laika formātam?
Attiecībā uz datuma un laika formatējumu vispārīgais formāts ir šāds:
Tas ir: #gads-mēnesis-dienaSPACEstunda:minūte:sekunde#
Tiklīdz jūs izveidosit derīgu datuma un laika virkni SQL, izmantojot iepriekš minēto vispārīgo formātu un izmēģināsit to, izmantojot kādu no Delphi datu kopas komponentiem kā TADOQuery, jūs saņemsit šausmīgo 'Parametra objekts ir nepareizi definēts. Tika sniegta nekonsekventa vai nepilnīga informācija” kļūda plkstizpildes laiks!
Problēma ar iepriekš minēto formātu ir ':' rakstzīmē — kā to izmanto parametriem Delphi parametrizētos vaicājumos. Tāpat kā '... WHERE DateField = :dateValue' — šeit 'dateValue' ir parametrs, un tā atzīmēšanai tiek izmantots ':'.
Viens no veidiem, kā “labot” kļūdu, ir izmantot citu datuma/laika formātu (aizstāt “:” ar “.”).
Un šeit ir pielāgota Delphi funkcija, lai atgrieztu virkni no datuma un laika vērtības, ko varat izmantot, veidojot SQL vaicājumus programmai Access, kur jums ir jāmeklē datuma un laika vērtība:
Formāts izskatās dīvains, taču tā rezultātā tiks pareizi formatēta datuma un laika virknes vērtība, kas tiks izmantota SQL vaicājumos!
Šeit ir īsāka versija, izmantojot FormatDateTime rutīnu: