Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка запроса к dbf. [D7, XP]


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо