Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Переворт дат в природе
 
 автор: Torny   (24.10.2007 в 13:01)   личное сообщение
 
 

Из модуля формы отправляю в качестве параметра к запросу дату 06.09.2007 в формате дд.мм.гггг
В запрос приходит дата 09.06.2007 но в том же самом формате дд.мм.гггг!
Что делать (Access 2003) ?

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "Запрос2"
Set rst = cmd.Execute(, Array(CDate(Дата1), CDate(Дата2)))
Set cmd = Nothing

  Ответить  
 
 автор: osmor   (24.10.2007 в 14:15)   личное сообщение
 
 

Format(Дата1, "\#mm\/dd\/yyyy\#")

  Ответить  
 
 автор: Torny   (24.10.2007 в 15:40)   личное сообщение
 
 

А в таком виде запрос не принимает дату вообще. Если убрать ##, то значение параметра принимается, но месяц все-равно 6-ой, а не 9-ый.

Запрос2
PARAMETERS [Дата1] DateTime, [Дата2] DateTime;
SELECT [Дата1] AS Выражение1, [Дата2] AS Выражение2;

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "Запрос2"
Set rst = cmd.Execute(, Array(Format(Дата1, "\#mm\/dd\/yyyy#"), Format(Дата2, "\#mm\/dd\/yyyy#")))
Set cmd = Nothing

В итоге в параметре вместо #9/6/2007# стоит "#9/6/2007#"(!), что как дата не распознается

  Ответить  
 
 автор: Силыч   (24.10.2007 в 16:08)   личное сообщение
 
 

Почувствуйте разницу
ваше

Format(Дата1, "\#mm\/dd\/yyyy#"), 

и как надо

Format(Дата1, "\#mm\/dd\/yyyy\#"), 

  Ответить  
 
 автор: Torny   (24.10.2007 в 16:12)   личное сообщение
 
 

Все равно не работает даже на уровне
CDate(Format(Дата1, "\#mm\/dd\/yyyy\#"))

Выдает <Type mismatch> при том, что
Format(Дата1, "\#mm\/dd\/yyyy\#") 
дает "#09/06/2007#"

  Ответить  
 
 автор: Силыч   (24.10.2007 в 16:15)   личное сообщение
 
 

ну и нормально выдает! так и надо!
?Format(Date(), "\#mm\/dd\/yyyy\#")
#10/24/2007#

месяц. ден. год. все как омериканца прописали!
специально для выборки из запросов.
а вам че надо?! для чего?

попробуйте так

?Format(Date(), "mm\/dd\/yyyy")
10/24/2007

или так
?Format(Date(), "dd\/mm\/yyyy")
24/10/2007

можете вообще так
?Format(Date(), "dd-mm-yyyy")
24-10-2007

я бы еще хелп почитал про формат и про даты вообще

  Ответить  
 
 автор: Torny   (24.10.2007 в 16:25)   личное сообщение
 
 

Ну простая задача - передать две даты в запрос, чтобы отобрать данные между ними.
Простой пример: первая дата 23/8/2007, вторая 6/9/2007.
Запрос в качестве второго параметра получает 9/6/2007 и ясное дело ничего не выдает.
Если вводить значение параметров вручную, все нормально. Если из кода - переворачивает каналья и все тут.
Если ссылаться из запроса на поля формы - тоже работает. Но я хочу работать с параметрами запроса, чтобы потом с минимальными усилиями перекинуть все в SQL Server и клиента не переписывать.

  Ответить  
 
 автор: Силыч   (24.10.2007 в 16:34)   личное сообщение
 
 

а так если попробовать передать параметры?
?cdate("6/9/2007")
06.09.2007

или так :)
a)Format(cdate("6/9/2007"),"\#dd\/mm\/yyyy\#")

b)Format(cdate("6/9/2007"),"\#mm\/dd\/yyyy\#")

  Ответить  
 
 автор: Torny   (24.10.2007 в 16:46)   личное сообщение
 
 

С первого варианта мы начали
Второй не прокатывает и еще раз тестовый пример:
Запрос

PARAMETERS [Начало плейлиста] DateTime, [Окончание плейлиста] DateTime;
SELECT [Начало плейлиста] AS Выражение1, [Окончание плейлиста] AS Выражение2;

Код

Set cmd = New ADODB.Command
Set cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "Запрос1"
Set rst = cmd.Execute(, Array(CDate(НачалоПлейлиста), Format(CDate(ОкончаниеПлейлиста), "\#mm\/dd\/yyyy\#")))
Set cmd = Nothing

Результаты

cmd.parameters(1).Value  -  "#09/06/2007#"
rst(1).Value - Empty

  Ответить  
 
 автор: ГлазастыйМышь   (24.10.2007 в 16:40)   личное сообщение
 
 

лично я теперь передаю как Long. (т.е. преобразовываю и передаю, ну чтоб больше не мучится)

  Ответить  
 
 автор: Torny   (24.10.2007 в 17:01)   личное сообщение
 
 

Хорошая идея.
А знаете, что сработало в конечном счете ?


Format(ОкончаниеПлейлиста, "dd mmm yyyy")


То есть передача в виде текста

  Ответить  
 
 автор: Силыч   (24.10.2007 в 17:11)   личное сообщение
 
 

бред :)
аа у вас региональныйе установки даты какие?

  Ответить  
 
 автор: Torny   (24.10.2007 в 17:40)   личное сообщение
 
 

Ну наши, советские

  Ответить  
 
 автор: Анатолий (Киев)   (25.10.2007 в 16:35)   личное сообщение
 
 

Попробуйте так: Format(Date,"'yyyy\-mm\-dd'")
Jet и SQL Server принимают дату по разному. Вам давали советы для Jet, пока вы не признались... :-)

  Ответить  
 
 автор: Силыч   (24.10.2007 в 17:02)   личное сообщение
 
 

я тоже везде использую YYYYMMDD

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList