Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с датами при поиске 
:(
    Опции темы
nicka
  Дата 19.5.2004, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Работаю в Access
Код пишу на Visual Basic

В данном случае пишу процедуру поиска записей из таблицы по дате. Формат даты в таблице 15.05.2004, использую рекордсет(ADO), для которого составляю строку запроса
Код
strsql = "SELECT * FROM table1 WHERE date_field >= #" & Format(me.date_field.Value, "mm/dd/yyyy") & "# "


где me.date_field.Value - поле ввода на форме, в которое я ввожу значение 15.05.2004,
на данном поле у меня стоит маска 99.99.9999;0;_

Таким образом получаю строку
Код
SELECT * FROM table1 WHERE date_field >= #05.15.2004#


и хотя в таблице у меня есть записи с датой 15.05.2004, рекордсет ничего не выдает.

Пробовала много разных вещей - ничего не помогает,

когда у меня на машине в установках даты прописан формат 15/05/2004 , т.е. со слешами,
то никаких проблем не возникало, хотя там тоже есть хитрости, но их хоть нашла...
а тут никак не могу сообразить в чем дело,
А на машине у клинта , как раз формат даты с точками, так что надо мне решить этц проблему ,
а то кранты... baaa.gif
PM MAIL   Вверх
nicka
Дата 19.5.2004, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



НАпример, почему
Код
Format('15/05/2004', "mm/dd/yyyy")

выдает 05.15.2004 ???

Ведь все из-за слешей здесь, рекордсет не не выдает записей, а выдает ошибку , говоря, что
Цитата
Syntax error in date in query expression 'date_field >= 05.15.2004'
!!!

Значит, мне нужен формат со слешами! а как его получить?
PM MAIL   Вверх
bankuss
Дата 20.5.2004, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 396
Регистрация: 26.3.2004

Репутация: 3
Всего: 4



замени точки на слэши через replace()
PM MAIL   Вверх
Akina
Дата 20.5.2004, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Я в таких случаях поступаю наоборот - форматирую не условие к виду поля, а содержимое поля к виду проверяемой даты. Запрос исполняется, есссно, медленнее, но зато на 100% переносим с машины на машину вне зависимости от версии офиса и региональных установок...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
nicka
Дата 20.5.2004, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Цитата
Я в таких случаях поступаю наоборот - форматирую не условие к виду поля, а содержимое поля к виду проверяемой даты
не совсем поняла,
нельзя ли пример, с моего примера?

PM MAIL   Вверх
Akina
Дата 20.5.2004, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Вот тупой пример SQL-формы запроса с отбором по диапазону дат с 15 января по 31 января 2004 г. в поле Filed3:

Код
SELECT Таблица1.Field1, Таблица1.Field2, Format([Таблица1]![Field3],"yyyymmdd") AS ВыражениеДляОтбора
FROM Таблица1
WHERE (((Format([Таблица1]![Field3],"yyyymmdd")) Between "20040115" And "20040131"));


Это сообщение отредактировал(а) Akina - 20.5.2004, 15:28


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
nicka
Дата 20.5.2004, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 11.6.2003

Репутация: нет
Всего: 1



Akina , понятно вообщем, насчет универсальности , действительно удобно,
а насколько оправдано с точки зрения производительности?


А Я вот так сделал и пошло как надо

Код
Format('15/05/2004', "mm\/dd\/yyyy")

PM MAIL   Вверх
Akina
Дата 20.5.2004, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата
насколько оправдано с точки зрения производительности

совершенно неоправдано


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.