powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / отбор по датам из vba
17 сообщений из 17, страница 1 из 1
отбор по датам из vba
    #32332117
Артем2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице хранятся даты в кратком виде 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
отбор по датам из vba
    #32332121
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Format(pole1, 'mm\/dd\/yy')
или же через DateValue
Код: plaintext
WHERE date Between  " & DateValue(pole1) & " and " & DateValue(pole2) 
...
Рейтинг: 0 / 0
отбор по датам из vba
    #32332136
Артем2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не помогает, ни 'mm\/dd\/yy' , ни DateValue
с DateValue получается WHERE date Between #22.07.2003# and #30.11.2003# , вродебы как надо,
но выборка пустая!
...
Рейтинг: 0 / 0
отбор по датам из vba
    #32332140
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда весь запрос в студию!
...
Рейтинг: 0 / 0
отбор по датам из vba
    #32332143
Артем2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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
отбор по датам из vba
    #32332145
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Через DateValue таким способом работать не будет! Оно же форматируется в соответствии с настройками Windows, а не по mm/dd/yyyy.

Надо:

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

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

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

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

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

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

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

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


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
отбор по датам из vba
    #32332199
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот именно то, что ты выделил, я и хочу сказать. Если в базе или на экране сидит стринг в одном формате, а the Short Date format you specified for your system другой (просто запустили базу на другом компе), то работать оно будет неправильно. Это те самые меры предосторожности, о которых ты говоришь, только я добавляю, что требование соблюдать их слишком обременительно. Никто не будет менять настройки Windows специально под одну аппликацию.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / отбор по датам из vba
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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