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

9 отговора 366 прегледа
#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

хич не е тъп, проблемът с формата на датата в аксес е пословичен

номерът е, че зависи от regional settings на компютъра ти, т.е. ако ти е български (има едно г.), по-добре го махни, защото аксеса не се оправя

Отговор
в отговор на AcidMemory #3

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

аз използвам други неща при msaccess i ms sql, но
защо не опиташ

insert into table (datefield ) values ('20030828')

100% ще стане

sql автоматично ще обърне стринга в дата

Отговор
в отговор на planik #4

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

да, ако си направи формата на датата такъв - няма проблем, но ако започнат да се преплитат форматите (примерно се ползва и календар контролката и ръчно въвеждане) - става малък ад (просто трябва всеки да въвежда дата само по един и същи начин)

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

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

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

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

Bravo, pi4!

Naistina tova e pravilnoto re6enie, i az sam se blaskal qko dokato go shvana.

4udq se samo kak nikoi ot moza4nite trastove ne moja da pomogne nito sega, nito predi nqkolko meseca, kogato pitah sa6toto ne6to...

Derzai...

We appoligize for inconvenience...
Отговор
в отговор на Viper X #7

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

форматите са няколко. аз например обикновено ползвам yyyy-mm-dd или yyyymmddhhmmss

Отговор
в отговор на radobg #8

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

Има една функция на Алън Браун от Австралия. Той форматира датите преди да ги използва в SQL стринга.

Function SQLDate(varDate As Variant) As String
' MS-Access Tips for Serious Users
' Provided by Allen Browne

If IsDate(varDate) Then
SQLDate = "#" & Format$(varDate, "mm\/dd\/yyyy") & "#"
End If

End Function

Ето как се използва:

StrSQL = "SELECT * FROM [Holidays data]"
StrSQL = StrSQL & " WHERE [Date]=" & SQLDate(curDate)
StrSQL = StrSQL & " ORDER BY [ID];"
Set rst = CurrentDb.OpenRecordset(StrSQL)

А ето как се форматира дата:
Format(Now(),"Short date")

Отговор
в отговор на Dani #9

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

Човекът от Австралия - много добре, но ако не ме лъже паметта си го пише и някъде в helpa, че датата, когато се използва в sql-a трябва да е във формат mm/dd/yyyy

Отговор
в отговор на Ani #10

Точно така, виж как форматира датата

Да точно така. Всички операции свързани с датата трябва да са във формат mm/dd/yyyy и понеже регионалните настройки са различни Алън Брауни предлага винаги когато се работи с датата тя да се форматира с функцията която е показана.

Аз следвам неговата препоръка и нямам проблеми при SQL операциите. Това е за Access 97, 2000, 2002.

Що се касае да MS SQL Server 2000 още не съм толкова сигурен, но мисля че пак ще е така.

Отговор