SQL проблем с дата в MSACCESS
9 отговора
366 прегледа
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
та - в какъв формат трябва да се зададе датата, за да тръгне това чудо? Сигурен съм, че въпросът ми е мнооооого, мнооого тъп, ама какво да се прави, трябва и такива да има :))) Благодаря ви
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
хич не е тъп, проблемът с формата на датата в аксес е пословичен
номерът е, че зависи от regional settings на компютъра ти, т.е. ако ти е български (има едно г.), по-добре го махни, защото аксеса не се оправя
номерът е, че зависи от regional settings на компютъра ти, т.е. ако ти е български (има едно г.), по-добре го махни, защото аксеса не се оправя
Re: SQL проблем с дата в MSACCESS
аз използвам други неща при msaccess i ms sql, но
защо не опиташ
insert into table (datefield ) values ('20030828')
100% ще стане
sql автоматично ще обърне стринга в дата
защо не опиташ
insert into table (datefield ) values ('20030828')
100% ще стане
sql автоматично ще обърне стринга в дата
Re: SQL проблем с дата в MSACCESS
да, ако си направи формата на датата такъв - няма проблем, но ако започнат да се преплитат форматите (примерно се ползва и календар контролката и ръчно въвеждане) - става малък ад (просто трябва всеки да въвежда дата само по един и същи начин)
Re: SQL проблем с дата в MSACCESS
мерси за идеите, проблема беше, че date e запазена дума в Аксеса, и се оказа че трябва да го заградя в счупени скоби, т.е.
sql = "INSERT INTO picks (betid, [date]) values (6, 12.09.03 )"
и всичко тръгна на 6
sql = "INSERT INTO picks (betid, [date]) values (6, 12.09.03 )"
и всичко тръгна на 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...
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...
Re: SQL проблем с дата в MSACCESS
форматите са няколко. аз например обикновено ползвам yyyy-mm-dd или yyyymmddhhmmss
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")
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")
Re: SQL проблем с дата в MSACCESS
Човекът от Австралия - много добре, но ако не ме лъже паметта си го пише и някъде в helpa, че датата, когато се използва в sql-a трябва да е във формат mm/dd/yyyy
Точно така, виж как форматира датата
Да точно така. Всички операции свързани с датата трябва да са във формат mm/dd/yyyy и понеже регионалните настройки са различни Алън Брауни предлага винаги когато се работи с датата тя да се форматира с функцията която е показана.
Аз следвам неговата препоръка и нямам проблеми при SQL операциите. Това е за Access 97, 2000, 2002.
Що се касае да MS SQL Server 2000 още не съм толкова сигурен, но мисля че пак ще е така.
Аз следвам неговата препоръка и нямам проблеми при SQL операциите. Това е за Access 97, 2000, 2002.
Що се касае да MS SQL Server 2000 още не съм толкова сигурен, но мисля че пак ще е така.