Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Проблема с обновлением БД


Автор: 3EHbKA 30.10.2006, 12:16
Добрый день всем!

У меня возникла проблема при обновлении данных в БД, а именно:
В программе есть поток, который занимается "общением" с COM портом.
Данные принимаются и записываются в БД, после чего содержимое БД обновляется на экране.

Добавление записей в БД (paradox) пробовал делать несколькими способами:
1. С использованием Table 
Table1.Insert
...
Table1.Post

2. C использованием Quety
Query1.Sql.Add('INSERT INTO ..........');
Query1.execSQL

Потом вывожу обновление на экран следующим образом:
На форме есть DBGrid, который связан с Query2 (в Query2.SQL.Text:="SELECT * FROM .....")
Вывожу обновление следующим образом:
Query2.Close;
Query2.Open;

Так вот иногда программа вызывает ошибку и закрывается, я грешу на обновление данных. Причем вылазиет ошибка довольно редко, может через 100.000 запясей, может через 1000. Т.е. никакой закономерности в этом нет.

Если у кого-нить есть мысли как избавиться от этого глюка, поможите, чем можите.
Спасибо.

Автор: superVad 30.10.2006, 12:57
а там текст какой нить у ошибки есть?

Автор: 3EHbKA 30.10.2006, 13:01
Project tarif.exe raised exception class EInvalidOperation with message 'Canvas does not allow drawing'.
Process stopped. 

указатель после строчки 
Query2.Open;

Автор: Rodman 30.10.2006, 13:37
Цитата(3EHbKA @  30.10.2006,  13:01 Найти цитируемый пост)
Canvas does not allow drawing

а при чем тут запрос... у тебя проблемы с отображением какого то компонента...

Автор: 3EHbKA 30.10.2006, 13:53
Rodman

Т.е. проблемма в выводе на эран?
Но возникает она после того, как я делаю
Form1.Query1.Active:=true;
а это в совю очередь выводит обновленные данные в DBGrid 

Автор: SergeBS 30.10.2006, 17:07
3EHbKA
Для начала найди разницу между Insert и Append.
Для продолжения - проверяй состояние Table. 
Для завершения - выкинь BDE и возьми что-либо другое. Почему - читай на www.ibase.ru статью Кузьменко. И еще можешь подумать на тему чем связка close-open отличается от refresh.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)