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

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

Глючит BDE!Помогите!!!


MasterDenis ©   (2004-02-09 13:13:00) 

Система управления очередью для банка.
Все действия пишутся в базу данных.
Запрос формирую через TQuery. (внизу)
Где-то раз в 25-30 запросов возникает исключение и запрос не проходит, соответственно продседура где эта хрень происходит аварийно завершается.
Что делать?
Вроде обошел эту беду при помощи try .. except, но это не решение...
Помогите!!!

Str1 := DateToStr(Date);
Str2 := TimeToStr(Time);
Form1.Query1.Close; // Формируем SQL запрос
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add("INSERT INTO "" + BaseName + "" (FAMILY,OPDATA,OPTIME,CLIENT,OPERATION)");
Form1.Query1.SQL.Add("VALUES ("" + Kassa[ToDevice.i,ToDevice.j].Name + "","" + Str1 + "","" + Str2 + "","" + IntToStr(Kassa[ToDevice.i,ToDevice.j].Client.Num) + "","+1")");
Form1.Query1.ExecSQL;


Sandman25   (2004-02-09 15:26:00) [1]

Если в секунду выполняется 5-10 запросов, то нужно познакомиться с параметрами, и использовать параметризованный запрос. Глядишь, и BDE перестанет "глючить"...


MasterDenis   (2004-02-09 15:23:00) [2]

Вам смешно... А у меня вилы из бока торчат...


Anatoly Podgoretsky   (2004-02-09 15:02:00) [3]

Sandman25 © (09.02.04 13:16) [1]
А на кого еще валить, не на себя же?


MasterDenis   (2004-02-09 14:53:00) [4]

Так ведь ошибка вылетает строго на Form1.Query1.ExecSQL;
Я сейчас ее запрятал:
try
Form1.Query1.ExecSQL;
except
end;

И все ОК.
А так ошибка вылезала бы в строке

Form1.Query1.SQL.Add("VALUES ("" + Kassa[ToDevice.i,ToDevice.j].Name + "","" + Str1 + "","" + Str2 + "","" + IntToStr(Kassa[ToDevice.i,ToDevice.j].Client.Num) + "","+1")");


sniknik   (2004-02-09 14:38:00) [5]

> 1.Ошибка "Access Vialation ...".
обрашение к несушествуюшим обьектам

> Kassa[ToDevice.i,ToDevice.j].Name
> Kassa[ToDevice.i,ToDevice.j].Client.Num
обьекты

замени на константы(так чтобы все данные тобой в строке запроса прописались гарантировано, вместо Kassa[ToDevice.i,ToDevice.j].Name
подставь Str1 к примеру и т.д.) и проверь кто на самом деле виноват.


MasterDenis   (2004-02-09 14:27:00) [6]

1.Ошибка "Access Vialation ...".
2.С параметрами занком плохо, поэтому просто проверяю правильность данных и "неправильные" символы заменяю на "правильные".
2.Ковычки в Kassa[ToDevice.i,ToDevice.j].Name быть не могут, это я контролирую.

А глюк именно BDE потому, что нет никакой системы! Я в режиме отладки все запросы просмотрел. Все корректно.
У меня такое ощущение, что при поступлении в 1 сек 5 - 10 запросов начинается беда.
Может нужно настройк в BDE сделать?


Sandman25   (2004-02-09 13:16:00) [7]

1. Какое исключение?
2. Почему не используете параметры? Поставлю я в качестве разделителя даты запятую, и все, конец программе.
3. В Kassa[ToDevice.i,ToDevice.j].Name могут быть кавычки?
4. Почему сразу глюк BDE, а не Ваша ошибка?


Наверх

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