![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка запроса к dbf. [D7, XP]
MonoLife © (2009-05-18 08:02:00)Ситуация крайне глупая, но я в недоумении...
Имеются базы dbf (не мои). Произвожу запросы к ней с использованием конструкции в SQL:
SELECT <fields> FROM <base1> WHERE date1 BETWEEN :dt1 and :dt2
UNIONSELECT <fields> FROM <base2> WHERE date1 BETWEEN :dt1 and :dt2 ORDER BY <field>
Параметры dt1 и dt2 TDate. Поля date1 - TDate.
Псевдоним в BDE-администраторе настроен на эти dbf файлы.
Компонент TQuery databasename=псевдониму...
Подобный запрос может работать месяц, год... Но в один моментUNION перестает работать:(
По отдельности из обеих баз выборка идет правильная, а с UNION, то 0 записей, то только записи из таблицы, к примеру base2...
Проверка файлов dbf различными другими средствами показывает, что база данных без ошибок...
Я не понимаю, что случается и почему вдруг UNION перестает "работать".
Самое интересное, что через несколько дней может опять восстановиться запрос с UNION, а может и нет..
Ребят, посоветуйте что можно сделать?
MonoLife (2009-05-18 12:04:00) [21]
> Медвежонок Пятачок © (18.05.09 12:02) [15]
Не забываем, что по отдельности (без UNION) все записи выбираются
MonoLife (2009-05-18 12:03:00) [22]
> Медвежонок Пятачок © (18.05.09 12:02) [15]
>Причем такое значение, которое не попадает в твое условие выбора.
Если условие с 1 по 30 мая, то как могут не попасть в условие записи, которые еще вчера попадали?
MonoLife (2009-05-18 12:02:00) [23]
> Sergey13 © (18.05.09 11:55) [13]
все локально.
> Совместная работа в общем не вмешивается временно в процесс?
как бы не запускаю никаких других процессов, связанных с этой базой
Медвежонок Пятачок (2009-05-18 12:02:00) [24]И что? Они тоже имеют значение TDATE - текущую дату..
Ну имеют.
Причем такое значение, которое не попадает в твое условие выбора.
MonoLife (2009-05-18 12:01:00) [25]
> Anatoly Podgoretsky © (18.05.09 11:42) [11]
Нет, не игнорирую.. Первое, что я сделал, когда UNION перестал работать я указал 4 параметра, вместо 2-х.
Результата это не дало...
ParamByName('dt1').DataType:=ftDate;
ParamByName('dt1').value:=StrToDate('01.05.2009')
ParamByName('dt2').DataType:=ftDate;
ParamByName('dt2').value:=StrToDate('31.05.2009')
ParamByName('dt3').DataType:=ftDate;
ParamByName('dt3').value:=StrToDate('01.05.2009')
ParamByName('dt4').DataType:=ftDate;
ParamByName('dt4').value:=StrToDate('31.05.2009')
> Медвежонок Пятачок © (18.05.09 11:46) [12]
И что? Они тоже имеют значение TDATE - текущую дату.. Тем более, что утром не работало, а сейчас работает, причем база не менялась в течение дня.
Не ребят, без разницы, все телодвижения с программным кодом не дают никаких результатов.. UNION то работает, то нет по какой-то своей прихоти...
Я надеялся, что кто-то скажет, что да, такое может быть у BDE при работе с dbf по причине глюков в системе, может быть... я не знаю:(
Sergey13 (2009-05-18 11:55:00) [26]> [10] MonoLife © (18.05.09 11:39)
А может в момент "неработоспособности" запроса идти какая нибудь переиндексация этих файлов с другой машины или что-то в этом роде? Совместная работа в общем не вмешивается временно в процесс?
Медвежонок Пятачок (2009-05-18 11:46:00) [27]Записи те же, просто их может (или не может) стать больше чем вчера.
Вот они и другие (тех кого стало больше чем вчера)
Anatoly Podgoretsky (2009-05-18 11:42:00) [28]Ты игнорируешь знание, что у тебя четыре параметра.
MonoLife (2009-05-18 11:39:00) [29]
> Sergey13 © (18.05.09 11:16) [8]
>Были те же? Или они постоянно "свежие"?
та же база, накапливаются данные.
Я запрашиваю данные за текущий месяц.
> Медвежонок Пятачок © (18.05.09 11:18) [9]
> Но записи другие.
Записи те же, просто их может (или не может) стать больше чем вчера.
Так вот. Вчерашний запрос за текущий период выдал мне нужное, а сегодня - нет.. Точнее потом, вдруг выдал:)
Параметры к запросу всегда одни и те же, ну.. применимо к текущему периоду.. с 1-го по последний день месяца, к примеру..
Медвежонок Пятачок (2009-05-18 11:18:00) [30]Грубо говоря, еще вчера всё "работало" с теми же самыми
> параметрами и их значениями.
И сегодня "работает".
Но записи другие.
Sergey13 (2009-05-18 11:16:00) [31]> [2] MonoLife © (18.05.09 08:38)
> Грубо говоря, еще вчера всё "работало" с теми же самыми
> параметрами и их значениями.
А вчера
> базы dbf (не мои).
Были те же? Или они постоянно "свежие"?
MonoLife (2009-05-18 10:37:00) [32]
> Anatoly Podgoretsky © (18.05.09 10:02) [6]
Понятно.
Если б это еще решало проблему...
Anatoly Podgoretsky (2009-05-18 10:02:00) [33]В любом случае у тебя четыре параметра, Params[0]..Params[3], а не два, которые имеют необязательные имена.
MonoLife (2009-05-18 09:43:00) [34]
> Sergey13 © (18.05.09 09:37) [4]
пробовал.. та же байда.. была..
ща раз 5 запустил запрос с UNION всё нормально..
Такое ощущение, что что-то мешало выполнить запрос, а теперь это "что-то" исчезло и работает как часы...
Sergey13 (2009-05-18 09:37:00) [35]> [2] MonoLife © (18.05.09 08:38)
Попробуй сделать 4 параметра, а не 2. Т.е. все параметры со своим именем.
MonoLife (2009-05-18 09:36:00) [36]вот, млин! Запустил этот запрос с UNION опять - нормальная выборка!..
Не могу поймать ситуацию когда происходят глюки:(
MonoLife (2009-05-18 08:38:00) [37]Работает вот таким образом:
1-й запрос: SELECT <fields> FROM <base1> WHERE date1 BETWEEN :dt1 and :dt2 ORDER BY <field>
результат Ок
2-й запрос: SELECT <fields> FROM <base2> WHERE date1 BETWEEN :dt1 and :dt2 ORDER BY <field>
результат Ок
Одним запросом вместе с UNION - беда:(. Грубо говоря, еще вчера всё "работало" с теми же самыми параметрами и их значениями.
меня эти "чудеса" в могилу сведут.:(
Сергей М. (2009-05-18 08:28:00) [38]При таких "чудесах" первое что напрашивается - это "чудеса" со значениями передаваемых параметров dt1 и dt2