Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / отбор по датам из vba / 17 сообщений из 17, страница 1 из 1
22.11.2003, 14:09
    #32332117
Артем2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
В таблице хранятся даты в кратком виде dd.mm.yyyy :

Код: plaintext
1.
2.
3.
4.
5.
6.
date
 ---------------
 
 17 . 09 . 2003 
 01 . 10 . 2003 
 25 . 11 . 2003 
.....


в запросе (из vba) отбираю так :
Код: plaintext
WHERE date Between # " & Format(pole1, " mm-dd-yyyy ") & " # and # " & Format(pole2, " mm-dd-yyyy ") & " #"


на выходе какойто неправильный отбор данных, как я понимаю - я неправильно пишу формат даты? как правильно?
...
Рейтинг: 0 / 0
22.11.2003, 14:16
    #32332121
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Format(pole1, 'mm\/dd\/yy')
или же через DateValue
Код: plaintext
WHERE date Between  " & DateValue(pole1) & " and " & DateValue(pole2) 
...
Рейтинг: 0 / 0
22.11.2003, 14:37
    #32332136
Артем2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
не помогает, ни 'mm\/dd\/yy' , ни DateValue
с DateValue получается WHERE date Between #22.07.2003# and #30.11.2003# , вродебы как надо,
но выборка пустая!
...
Рейтинг: 0 / 0
22.11.2003, 14:43
    #32332140
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Тогда весь запрос в студию!
...
Рейтинг: 0 / 0
22.11.2003, 14:51
    #32332143
Артем2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
strSQL =  "SELECT qSPIkorz.№, qSPIkorz.Наим,  tbal.name AS [Б/В] , 
vveks2 AS [Тип], qSPIkorz.Номинал,  проценты, qSPIkorz.Серия, 
qSPIkorz.Номер, uchveks.datesost AS [Дата сост],  vpogash.vpog AS [Вид пог], 
uchveks.datepog AS [Дата пог],  [Цена пок], Доходность, qSPIkorz.[Дата покуп],  
uchveks.dateprod AS [Дата прод], qSPIkorz.[Баланс?] FROM qSPIkorz " 

strSQL = strSQL &  "WHERE qSPIkorz.[Дата покуп] Between #"  & DateValue
(tbdatepokot) &  "# and #"  & DateValue(tbdatepokdo) &  "#" 
...
Рейтинг: 0 / 0
22.11.2003, 14:59
    #32332145
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Через DateValue таким способом работать не будет! Оно же форматируется в соответствии с настройками Windows, а не по mm/dd/yyyy.

Надо:

Код: plaintext
Format(pole1,  "mm\/dd\/yyyy" )
...
Рейтинг: 0 / 0
22.11.2003, 15:01
    #32332146
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Код: plaintext
strSQL = strSQL &  "WHERE qSPIkorz.[Дата покуп] Between "  & DateValue(tbdatepokot) &  " and "  & DateValue(tbdatepokdo) 

DateValue возвращает дату ,а не стринг, поэтому символ # здесь не нужен.
Удачи
...
Рейтинг: 0 / 0
22.11.2003, 15:02
    #32332148
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
А поле-то - текст или дата??? Если дата, то см. выше. Если текст, то:

Код: plaintext
mid(pole1, 4 , 2 ) &  "/"  & mid(pole1, 1 , 2 ) &  "/"  & mid(pole1, 7 , 4 )
...
Рейтинг: 0 / 0
22.11.2003, 15:03
    #32332150
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
VIG, ма кара леха * ??? Ты сугубо не прав. Дата, будучи присоединенной к стрингу через &, превратится в стринг, причем по неизвестно какому формату!

---
* Ты чего, что с тобой (др.-евр.) .
...
Рейтинг: 0 / 0
22.11.2003, 15:07
    #32332153
Артем2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
спасибо, в первый раз (c)VIG так и советовал, но я лоханулся
...
Рейтинг: 0 / 0
22.11.2003, 15:56
    #32332165
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
VIG, ма кара леха???...
Шабат и метод Paste & Copy
Но главное ведь идея!
Правильно конечно так:

Код: plaintext
strSQL = strSQL &  "WHERE qSPIkorz.[Дата покуп] Between  DateValue("  & tbdatepokot &  ")  and   DateValue("  & tbdatepokdo &  ") " 
...
Рейтинг: 0 / 0
22.11.2003, 16:03
    #32332169
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Тоже не факт. Что такое tbdatepokot? Независимо от типа данных, он будет включен в стринг как стринг. Например:

WHERE qSPIkorz.[Дата покуп] Between DateValue(01.02.2002) and DateValue(01.02.2003)

Ну и кто сказал, что это будет понято как дата, да еще правильная?
...
Рейтинг: 0 / 0
22.11.2003, 16:31
    #32332176
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Когда нечего возразить,то нечего возразить :)
Код: plaintext
strSQL = strSQL &  "WHERE qSPIkorz.[Дата покуп] Between  DateValue('" & tbdatepokot & "')  and   DateValue('" & tbdatepokdo & "') " 

при условии ,что tbdatepokot и tbdatepokdo имеют тип стринг и содержат допустимую дату
...
Рейтинг: 0 / 0
22.11.2003, 17:01
    #32332184
Артем2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
ага, tbdatepokot и tbdatepokdo это текстбоксы
...
Рейтинг: 0 / 0
22.11.2003, 17:04
    #32332185
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Теперь оно будет воспринято как дата. Но насчет правильной - по-прежнему гарантии нет. Как функция DateValue поймет '01.02.03' - зависит от настроек Windows. Всего возможно 6 способов (как помнишь, я знаю комбинаторику), и только 1 (прописью: адын) из них отвечает тому, что имелось в виду.
...
Рейтинг: 0 / 0
22.11.2003, 17:30
    #32332191
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Саныч, ну какой же ты дотошный.При правильном употреблении и соблюдении мер предосторожности ни каких проблем ,что подтверждает и хелп


If date is a string that includes only numbers separated by valid date separators, DateValue recognizes the order for month, day, and year according to the Short Date format you specified for your system. DateValue also recognizes unambiguous dates that contain month names, either in long or abbreviated form. For example, in addition to recognizing 12/30/1991 and 12/30/91, DateValue also recognizes December 30, 1991 and Dec 30, 1991.
...
Рейтинг: 0 / 0
22.11.2003, 17:35
    #32332199
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отбор по датам из vba
Вот именно то, что ты выделил, я и хочу сказать. Если в базе или на экране сидит стринг в одном формате, а the Short Date format you specified for your system другой (просто запустили базу на другом компе), то работать оно будет неправильно. Это те самые меры предосторожности, о которых ты говоришь, только я добавляю, что требование соблюдать их слишком обременительно. Никто не будет менять настройки Windows специально под одну аппликацию.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / отбор по датам из vba / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]