SQL проблем с дата в MSACCESS
11 отговора
243 прегледа
SQL проблем с дата в MSACCESS
Бързам да кажа, че въпроса съм го задал и в клуб Бази Данни, но все пак там влизат доста по-малко хора, а съм сигурен, че тук има хора които знаят отговора.
Пиша си една програмка на ВБА за Аксес, не съм много навътре с нещата, чета постоянно хелп и разни други книжки дето имам по въпроса, ама за това не открих нищо, а вече 1 час се боря с него :(( Та въпроса е - искам да добавя запис в таблицата с нещо подобно:
sql = "INSERT INTO picks (betid, date) values (6, 12.09.03 )"
DoCmd.RunSQL sql
Тука betid е integer - с него нямам проблеми - когато пробвам
sql = "insert into picks (betid) values (6)"
всичко е ОК, проблема идва от полето date - от тип дата, където пробвах какви ли не формати на датата:
12.09.03
'12.09.03'
#12.09.03#
'#12.09.03#'
и нито едно не тръгна, винаги ми казва Syntax Error in INSERT INTO statemant
та - в какъв формат трябва да се зададе датата, за да тръгне това чудо? Сигурен съм, че въпросът ми е мнооооого, мнооого тъп, ама какво да се прави, трябва и такива да има :))) Благодаря ви
Пиша си една програмка на ВБА за Аксес, не съм много навътре с нещата, чета постоянно хелп и разни други книжки дето имам по въпроса, ама за това не открих нищо, а вече 1 час се боря с него :(( Та въпроса е - искам да добавя запис в таблицата с нещо подобно:
sql = "INSERT INTO picks (betid, date) values (6, 12.09.03 )"
DoCmd.RunSQL sql
Тука betid е integer - с него нямам проблеми - когато пробвам
sql = "insert into picks (betid) values (6)"
всичко е ОК, проблема идва от полето date - от тип дата, където пробвах какви ли не формати на датата:
12.09.03
'12.09.03'
#12.09.03#
'#12.09.03#'
и нито едно не тръгна, винаги ми казва Syntax Error in INSERT INTO statemant
та - в какъв формат трябва да се зададе датата, за да тръгне това чудо? Сигурен съм, че въпросът ми е мнооооого, мнооого тъп, ама какво да се прави, трябва и такива да има :))) Благодаря ви
Re: SQL проблем с дата в MSACCESS
не разбрах с кавички пробвал ли си. но пробвай и yyyymmdd
Re: SQL проблем с дата в MSACCESS
sql = "INSERT INTO picks (betid, date) values (6, #09/12/2003# )"
DoCmd.RunSQL sql
Пробвай това. Обзрни внимание на формата : mm/dd/yyyy
DoCmd.RunSQL sql
Пробвай това. Обзрни внимание на формата : mm/dd/yyyy
Re: SQL проблем с дата в MSACCESS
Благодаря на всички за идеите, но както често става, пуснах въпроса, дисконектнах дайлъпа и продължих да боря тва гадно куери и се оказа, че проблема е в името на полето - написах
sql = "INSERT INTO picks (betid, [date]) values (6, 12.09.03 )"
и всичко тръгна :)) това date е неква запазена дума в аксеса и затова даваше проблеми...
sql = "INSERT INTO picks (betid, [date]) values (6, 12.09.03 )"
и всичко тръгна :)) това date е неква запазена дума в аксеса и затова даваше проблеми...
Re: SQL проблем с дата в MSACCESS
По принцип датата дето ми правеше проблем беше 16 септември, ама аз за примера дето дадох горе нарочно я промених на 12 септември, за да стане 12.9.2003, което си е валидна дата и в двата формата :)) Та затова страшно много ме изненада с идеята си :))))))
Re: SQL проблем с дата в MSACCESS
а да не би формата на датата да зависи от регионалните настройки на уиндоуса?
станал съм подозрителен нещо
ein heller Schein am Firmament
станал съм подозрителен нещо
ein heller Schein am Firmament
Re: SQL проблем с дата в MSACCESS
аха, запазена дума е - оператор на базика, връща текуща дата :-))))
а големите ядове ще почнеш да ги береш като смениш регопшъните на вина... например с формат mm/dd/yyyy, а в кода датата е в dd.mm.yy...
sql = "INSERT INTO picks (betid, [date]) values (6, DateSerial(" + CStr(2003) + "," + CStr(9) + "," + CStr(16) + "))" '[date] става 16.09.2003
естествено, трябва да се разпарчетоса датата на съставните части, ако идва като стринг /предполагам че Insert-а е във функция и датите се сменят/
ако датата винаги ще е една и съща - DateSerial(2003,9,16), направо като стойност за полето...
прочее, това е една особеност на риболова с аксес - вътре в заявка може да се пишат бейсикови функции /user defined - също/, които се изпълняват при изпълнение на заявката... готино е, ама става гнусно ако решиш да прехвърляш програмата на друг език /C, Delphi, VB/ - през ADO например тоя SQL няма да мине
--------------------------------------
Започва Път от моят праг...
а големите ядове ще почнеш да ги береш като смениш регопшъните на вина... например с формат mm/dd/yyyy, а в кода датата е в dd.mm.yy...
sql = "INSERT INTO picks (betid, [date]) values (6, DateSerial(" + CStr(2003) + "," + CStr(9) + "," + CStr(16) + "))" '[date] става 16.09.2003
естествено, трябва да се разпарчетоса датата на съставните части, ако идва като стринг /предполагам че Insert-а е във функция и датите се сменят/
ако датата винаги ще е една и съща - DateSerial(2003,9,16), направо като стойност за полето...
прочее, това е една особеност на риболова с аксес - вътре в заявка може да се пишат бейсикови функции /user defined - също/, които се изпълняват при изпълнение на заявката... готино е, ама става гнусно ако решиш да прехвърляш програмата на друг език /C, Delphi, VB/ - през ADO например тоя SQL няма да мине
--------------------------------------
Започва Път от моят праг...
Re: С тази цел
точно тоя оператор малко ще те стопли за БГ формат на дата - с 'г.' в края... ама пък може и ти да си прав... знам ли.
аз като се будалкам с абцес датите ги пиша така, работи винаги, нямам нерви че ще стане издънка ;-)
--------------------------------------
Започва Път от моят праг...
аз като се будалкам с абцес датите ги пиша така, работи винаги, нямам нерви че ще стане издънка ;-)
--------------------------------------
Започва Път от моят праг...
Например:
Format(dtAt.Value, "yyyy-mm-dd")
Това ползвам и е безпроблемно за Аксески дати.
UB40 !
Това ползвам и е безпроблемно за Аксески дати.
UB40 !
Универсален формат за дата при Access
#MM/DD/YYYY#
това е универсален формат за дата и не зависи от Regional Settings.
това е универсален формат за дата и не зависи от Regional Settings.