SQL проблем с дата в MSACCESS

11 отговора 243 прегледа
#1

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

та - в какъв формат трябва да се зададе датата, за да тръгне това чудо? Сигурен съм, че въпросът ми е мнооооого, мнооого тъп, ама какво да се прави, трябва и такива да има :))) Благодаря ви

Отговор
в отговор на Viper X #2

Re: SQL проблем с дата в MSACCESS

не разбрах с кавички пробвал ли си. но пробвай и yyyymmdd

Отговор
в отговор на Viper X #3

Re: SQL проблем с дата в MSACCESS

Опитай с "/", а не с "."

чети и дишай по-леко
Отговор
в отговор на Viper X #4

Re: SQL проблем с дата в MSACCESS

sql = "INSERT INTO picks (betid, date) values (6, #09/12/2003# )"
DoCmd.RunSQL sql

Пробвай това. Обзрни внимание на формата : mm/dd/yyyy


Отговор
в отговор на Viper X #5

Re: SQL проблем с дата в MSACCESS

Благодаря на всички за идеите, но както често става, пуснах въпроса, дисконектнах дайлъпа и продължих да боря тва гадно куери и се оказа, че проблема е в името на полето - написах
sql = "INSERT INTO picks (betid, [date]) values (6, 12.09.03 )"
и всичко тръгна :)) това date е неква запазена дума в аксеса и затова даваше проблеми...

Отговор
в отговор на killall #6

Re: SQL проблем с дата в MSACCESS


По принцип датата дето ми правеше проблем беше 16 септември, ама аз за примера дето дадох горе нарочно я промених на 12 септември, за да стане 12.9.2003, което си е валидна дата и в двата формата :)) Та затова страшно много ме изненада с идеята си :))))))

Отговор
в отговор на killall #7

Re: SQL проблем с дата в MSACCESS

а да не би формата на датата да зависи от регионалните настройки на уиндоуса?

станал съм подозрителен нещо

ein heller Schein am Firmament
Отговор
в отговор на Viper X #8

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 няма да мине

--------------------------------------
Започва Път от моят праг...
Отговор
в отговор на Hateras #9

С тази цел

съществува и оператора ФОРМАТ в Бейсика.

UB40 !
Отговор
в отговор на jamie #10

Re: С тази цел

точно тоя оператор малко ще те стопли за БГ формат на дата - с 'г.' в края... ама пък може и ти да си прав... знам ли.
аз като се будалкам с абцес датите ги пиша така, работи винаги, нямам нерви че ще стане издънка ;-)

--------------------------------------
Започва Път от моят праг...
Отговор
в отговор на Hateras #11

Например:

Format(dtAt.Value, "yyyy-mm-dd")


Това ползвам и е безпроблемно за Аксески дати.

UB40 !
Отговор
в отговор на Viper X #12

Универсален формат за дата при Access

#MM/DD/YYYY#
това е универсален формат за дата и не зависи от Regional Settings.

Отговор