| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > зависание параметризованного запроса |
| Автор: marhatter 2.12.2009, 18:16 | ||
Здравствуйте. База данных dBase, способ доступа - BDE. Пишу слудующий простой запрос-
где s - значения предудушего запроса (12345,42170,45678, .....) (просматриваю из в цикле). Проблема в том, что для числа 42170 запрос зависает и не выдает никаких результатов(есть несколько таких "плохих" чисел). Для остальных чисел запрос работает. |
| Автор: Frees 2.12.2009, 19:46 | ||
что в tab зачем в апострофах?
а так? а это реальный запрос? а то ты выбираешь и в условие пишешь одно и тоже поле... |
| Автор: Данкинг 2.12.2009, 19:51 |
| "select TAB from TAB" ? |
| Автор: marhatter 2.12.2009, 20:08 | ||||||||
в tab - путь к таблице, типа 'C:\...'. Да это реальный запрос. Проверить так это или не так пока нет возможности, как проверю отпишусь. Добавлено через 45 секунд
Название таблицы не совпадает с названием поля Добавлено через 1 минуту и 59 секунд спасибо что откликнулись на мой вопрос Добавлено через 12 минут и 8 секунд С параметром тоже пробывал, безрезультатно. C большинством вот этих меняющихся значений S запрос работает, не работает при определенных значениях. Даже если просто выбирать из таблицы вот так:
он также зависает. |
| Автор: Данкинг 2.12.2009, 20:32 |
Ну да, попутал я. Попробуй оставь в таблице одно это "глючное" значение - тоже зависать будет? |
| Автор: marhatter 2.12.2009, 20:39 | ||
Дело в том оно не одно в таблице. Я методом "проб и ошибок" их вычленил из таблицы, если я их исключаю в запросе то все норм работает, если с ними то зависает. Ну попробую завтра оставить одно из таких значений , для проверки. |
| Автор: Frees 2.12.2009, 20:41 |
что значит зависает? на чем вичит? может у тебя просто селект ничего не возвращает и поэтому "зависает"? |
| Автор: marhatter 2.12.2009, 20:52 | ||
"зависает" на Query2.Open. Приложение после этого ни как не реагирует. В таблице существуют записи с такими нехорошими значениями. |
| Автор: Frees 2.12.2009, 20:56 | ||
| может их ООчень много? ждать пробовал? или запрос написать для выбора только 1 записи
|
| Автор: marhatter 2.12.2009, 21:00 | ||||
Их, например значения как в примере выше (421701), 5 штук в таблице. Ждал... Нет не пробывал выбирать только 1 запись, попробуем. |
| Автор: marhatter 3.12.2009, 07:54 | ||
Здравствуйте. Вот в общем более полный код:
Выдает ошибку 'Type micmatch in expression' |
| Автор: Frees 3.12.2009, 08:00 |
где? зы сборку запроса надо за цикл! |
| Автор: marhatter 3.12.2009, 08:02 | ||||
Делаю так
зависает))). Добавлено через 5 минут и 41 секунду
Ошибку выдает на Query2.Open. |
| Автор: Frees 3.12.2009, 08:14 |
LCHET какого типа ЗЫ может BDE в печь!? |
| Автор: marhatter 3.12.2009, 08:20 | ||
LCHET - NUMERIC, раньше проблем с BDE не было, да и сейчас думаю не в нем дело(может ошибаюсь), для некоторых значений то работает все норм, а для некоторых никак не хочет |
| Автор: Frees 3.12.2009, 08:28 | ||
а ты ему строку пихаешь! делай через параметр, но
|
| Автор: marhatter 3.12.2009, 08:31 | ||||||
я пробывал и через ASInteger, но вот щас попробую вот этот вариант Добавлено через 7 минут Попробывал
зависает на этом же значении. |
| Автор: Frees 3.12.2009, 08:42 |
| проверь на ado.... |
| Автор: Данкинг 3.12.2009, 11:43 |
| Открой .dbf фоксом и проверь запрос непосредственно в СУБД. Часто это помогает понять проблему. |
| Автор: Демо 3.12.2009, 12:14 |
| Если таблицы небольшие, то молжно было б и сюда прикрепить с примером. |
| Автор: marhatter 3.12.2009, 12:16 | ||||||
проверил через ADO, вроде работает)))), но сейчас проблема с датой в SELECT, какой формат она имеет.
пробывал data - 2009.11.01, 01.11.2009, 01/11/2009. тип data - string. Добавлено через 1 минуту и 9 секунд пишет ошибку - Operator/operand type mismatch Добавлено через 2 минуты и 48 секунд
большие таблицы, так бы конечно прикрепил))) |
| Автор: Данкинг 3.12.2009, 12:24 | ||
Правильно: откуда только ты этот BDE откопал. На фоксе с датой работают так:
Пробуй. |
| Автор: Демо 3.12.2009, 12:27 |
| marhatter, У тебя с данными какая-то проблема. Ты ведь не одно поле выбираешь. Создай другой запрос на движке BDE, который выбирал бы только одну запись, но не использовал в условии проблемное значение, т.е. с условиями по другим полям, чтобы проверить возвращаемые значения. Также проверь, что в настройках BDE включена опция BCD=True. Добавлено @ 12:28 Неправильно. для парадокса и DBF лучше пока ничего нет. PS. Только смысла в споре об этом нет. |
| Автор: marhatter 3.12.2009, 12:43 |
| вобщем сделал с ADO с датой в формате: select * from TABLE where dat>{^2009-12-02} работает!!! Сколько использовал BDE никогда не сталкивался с такой проблемой)))), всегда все работало нормально. СПАСИБО ВСЕМ!!!! |