Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » BCB + BDE + TQuery

Ответить
Настройки темы
BCB + BDE + TQuery

Аватара для Guest

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

 

Аватара для Megabizon

Старожил


Сообщения: 244
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата:
FROM "C:\ASH\DISCARDING\EXEDLL\_QTT_0.db" mrt
А что у тебя за значение mrt?
Когда я использовал 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

Guest


Профиль | Цитировать


mrt - это погремуха таблицы "C:\ASH\DISCARDING\EXEDLL\_QTT_0.db"  в контексте запроса. Крайне необходимая штука когда тянешь данные из нескольких таблиц (особенно если у них есть одинаковые имена полей)
Загляни в синтаксис SQL.
а насчет расширения ты абсолютно прав его можно не указывать, а можно указывать разницы нет.

Отправлено: 12:01, 07-11-2003 | #3


Аватара для Megabizon

Старожил


Сообщения: 244
Благодарности: 1

Профиль | Отправить PM | Цитировать


Так я не понял ты поборол беду или нет?
А про mrt сообразил, что-то сначала тормознул.

-------
С уважением


Отправлено: 14:26, 07-11-2003 | #4


Аватара для Guest

Guest


Профиль | Цитировать


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

Отправлено: 15:21, 07-11-2003 | #5


Аватара для Guest

Guest


Профиль | Цитировать


Спосибо всем отозвавшимся особенно Megabizon проблема решилась можно ссказать сама собой.
Умерла виндоза и после ее перестановки (и не только виндозы) перекомпилил программу и все нормально заработало.

Отправлено: 11:41, 11-11-2003 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » BCB + BDE + TQuery

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход