|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » BCB + BDE + TQuery |
|
BCB + BDE + TQuery
|
Guest |
Народ помогите кто чем может. Приму крассмотрению даже самые бредовые идеи.
Суть проблемы такова. Есть функция bool Tf_Main::DiscardingFromAvailability(int ProductID,float &Count,AnsiString AvailabilityTableName){ q_DiscardingFromAvailability->Active=false; q_DiscardingFromAvailability->SQL->Clear(); q_DiscardingFromAvailability->SQL->Add("SELECT mrt.ProductID,mrt.prCount" q_DiscardingFromAvailability->SQL->Add("FROM \""+AvailabilityTableName+".db\" mrt" q_DiscardingFromAvailability->SQL->Add("WHERE (mrt.ProductID="+IntToStr(ProductID)+"" q_DiscardingFromAvailability->Active=true; . . . И вот эта функция 3 месяца работала без проблем и вот буквально вчера начала вылетать с сообщением "Invalid parameter.". Причем ругается именно на открытие данных q_DiscardingFromAvailability->Active=true;. Функция до ошибки функция выполняется многоо раз. Текст запроса выглядит следующим образом SELECT mrt.ProductID,mrt.prCount FROM "C:\ASH\DISCARDING\EXEDLL\_QTT_0.db" mrt WHERE (mrt.ProductID=351) Вот что я уже перепробовал: 1) Изначально проект был написан на BCB5. Я переконвертил под BCB6 ... результат тот же. 2) Изначально Каждый раз при заходе в функцию создавался новый объект класса TQuery, а в конце функции этот объект разрушался. TQuery *Q=new TQuery(NULL); Q->Active=false; Q->SQL->Clear(); Q->SQL->Add("SELECT mrt.ProductID,mrt.prCount" Q->SQL->Add("FROM \""+AvailabilityTableName+".db\" mrt" Q->SQL->Add("WHERE (mrt.ProductID="+IntToStr(ProductID)+"" Q->Active=true; . . . delete Q; Я описал указатель на объект в объявлении класса формы и создал его один раз (получилось как написал в самом начале сообщения) ... результат тот же. 3)Пробовал ловить исключение вот что из него вытянул: ClassName="EDBEngineError" HelpContext="" Message="Invalid parameter." Мне както этой информации оказалось мало чтоб понять где собака порылась ... 4)Было подозрение что в строке FROM "C:\ASH\DISCARDING\EXEDLL\_QTT_0.db" mrt кто то глючит и воспринимает ":" как параметр в запросе и оставил только имя файла таблицы без полного пути. Результат тот же кромего у запроса свойство ParamCount=0 5)Повторные попытки выполнить SQL запрос после ошибки оканчиваются той же ошибкой не зависимо этоим же объектом или создается другой, но в это же время тот же запрос из скажем SQL Explorer выполняется без проблем. Вот вроди все что я пробовал сделать. Обойти это все конечно можно, но хотелось бы до сути докопаться. |
|
Отправлено: 10:07, 07-11-2003 |
Старожил Сообщения: 244
|
Профиль | Отправить PM | Цитировать Цитата:
Когда я использовал BDE напрямую (без алиасов), делал сдедующим образом: У TQuery есть свойство DatabaseName, в него записывал путь к файлам базы. Q->Close(); Q->DatabaseName = "C:\\ASH\\DISCARDING\\EXEDLL\\"; Q->SQL->Clear(); Q->SQL->Add("SELECT * FROM \"_QTT_0\";" Q->Open(); Причем разширение db указывать необязательно, если у темя тамже не лежит такой же файл с раширением dbf. Мне кажется у тебя все из-за mrt, что это? [s]Исправлено: Megabizon, 12:16 7-11-2003[/s] |
|
------- Отправлено: 11:14, 07-11-2003 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Guest |
mrt - это погремуха таблицы "C:\ASH\DISCARDING\EXEDLL\_QTT_0.db" в контексте запроса. Крайне необходимая штука когда тянешь данные из нескольких таблиц (особенно если у них есть одинаковые имена полей)
Загляни в синтаксис SQL. а насчет расширения ты абсолютно прав его можно не указывать, а можно указывать разницы нет. |
Отправлено: 12:01, 07-11-2003 | #3 |
Старожил Сообщения: 244
|
Профиль | Отправить PM | Цитировать Так я не понял ты поборол беду или нет?
А про mrt сообразил, что-то сначала тормознул. |
------- Отправлено: 14:26, 07-11-2003 | #4 |
Guest |
нет не поборол.
самая фигня в том что пару десятков раз эта функция выполняется, а только потом вылетает. а с mtr все нормально. |
|
Отправлено: 15:21, 07-11-2003 | #5 |
Guest |
Спосибо всем отозвавшимся особенно Megabizon проблема решилась можно ссказать сама собой.
Умерла виндоза и после ее перестановки (и не только виндозы) перекомпилил программу и все нормально заработало. |
Отправлено: 11:41, 11-11-2003 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
bde под Vista | shohrat | Программное обеспечение Windows | 1 | 18-01-2008 03:48 | |
BDE и репозитарии | Lamo | Программирование и базы данных | 3 | 26-02-2004 21:01 | |
Глюки с BDE | DYURIK | Программирование и базы данных | 2 | 20-10-2003 08:04 | |
BDE | skulida | Программирование и базы данных | 4 | 27-02-2003 21:50 | |
BDE ! | skulida | Хочу все знать | 5 | 25-02-2003 07:26 |
|