Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.02.07;
Скачать: CL | DM;

Вниз

DBGrid и Access. Не обновляет   Найти похожие ветки 

 
k0ks   (2009-12-10 18:23) [0]

Решил попробовать связать Delphi и Access (ADOConnection, ADOQuery, DATASource, DBGrid). Почему после добавления данных через Query (INSERT INTO USERS (NAME) VALUES (:PNAME);) в DBGrid они не появляются? Для обновленя ADOQuery1 (SELECT FROM USERS) пробовал ADOQuery1.close\open, ADOQuery.Active:=false\true. Но результата это не дало. Получилось только с использованием таймера на 4 секунды (3 уже не обновляет), что очень не удобно. Причем когда связывал с базой SQL все отлично обновлялось сразу же


 
clickmaker ©   (2009-12-10 18:57) [1]

фрагмент кода от добавления до переоткрытия?


 
sniknik ©   (2009-12-10 19:04) [2]

лучше фрагмент (план?) использования  ADOConnection ...
т.к.
> Получилось только с использованием таймера на 4 секунды
выглядит так что он у всех (вставляющего и читающего) компонентов разный.

и... сколько можно повторять не пользуйтесь ADOQuery... блин, есть же родные для идеологии ADO ADOCommand и ADODataSet.


 
k0ks   (2009-12-10 19:08) [3]

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
DM.ADOConnection1.BeginTrans; // начать транзакцию
ADOQuery2.Parameters.ParamByName("PName").Value:=Edit1.Text;
ADOQuery2.Parameters.ParamByName("PDol").Value:=Combobox1.Text;
ADOQuery2.Parameters.ParamByName("PSector").Value:=Combobox2.Text;
try
ADOQuery2.ExecSQL;
except
ShowMessage("Ошибка при добавлении данных!,"+#13+
              "Попробуйте еще раз!");
  {откатываем изменение}
  DM.ADOConnection1.RollbackTrans;
  exit;
end;
  DM.ADOConnection1.CommitTrans;
 ADOTable1.Active:=false;
 ADOTable1.Active:=true;
  Timer1.Interval := 4000;
 Timer1.Enabled  := True;

end;


 
Медвежонок Пятачок ©   (2009-12-10 19:13) [4]

а если коммит обломается, то исключения нам пофик.

хотя к эффекту задержки это конечно не относится.

плюс: начинаем транзакцию перед работой с параметрами.
а если там вдруг исключение, то надеемся что пушкин разберется с начатой транзакцией за нас


 
k0ks   (2009-12-10 19:18) [5]

Да обработчик пока не писал. не до этого. 2 дня сижу с этой бедой. с таймером вообще не красиво, пришлось даже прогресс бар запихнуть. Сейчас на практике на АЭС, так вот нужно мелкую прожку написать. Уже и другой компонент вставлял (JVDBGrid) и на другой машине с delphi 2006 запускал. ничего


 
Медвежонок Пятачок ©   (2009-12-10 19:19) [6]

про аэс - это нам страшная сказка на ночь?


 
k0ks   (2009-12-10 19:27) [7]

это про то, что проблему решить надо помочь


 
Медвежонок Пятачок ©   (2009-12-10 19:29) [8]

ну для начала начни применять советы которые уже здесь есть.
про адокомманд и адодатасет


 
Медвежонок Пятачок ©   (2009-12-10 19:33) [9]

заодно открывай тайну какой провайдер акцесса у тебя используется


 
k0ks   (2009-12-10 19:34) [10]

>выглядит так что он у всех (вставляющего и читающего) компонентов разный.
Всё правильно. Читающий ADOQuery1 подключен напрямую через ConnectionString. ADOQuery2 через ADOConnection1 на модуле (DM). Datasource->ADOQuery1, DBGrid->DataSource


 
sniknik ©   (2009-12-10 19:34) [11]

еще и ADOTable1.... ЖУТЬ!

> это про то, что проблему решить надо помочь
может наоборот? не справишься и глядишь настоящего программиста пригласят... и катастрофы не произойдет. а иначе придется брать красную монтировку, от хедкрабов отбиваться...


 
k0ks   (2009-12-10 19:34) [12]

Microsoft Jet4


 
Медвежонок Пятачок ©   (2009-12-10 19:36) [13]

Всё правильно. Читающий ADOQuery1 подключен напрямую через ConnectionString. ADOQuery2 через ADOConnection1 на модуле (DM). Datasource->ADOQuery1, DBGrid->DataSource

ну вот. исправляй свое "правильно"  на совсем правильно.
один коннекшен на всех.
один адокомманд на инсерт.
один адодатасет на селект


 
k0ks   (2009-12-10 19:36) [14]


> может наоборот? не справишься и глядишь настоящего программиста
> пригласят... и катастрофы не произойдет. а иначе придется
> брать красную монтировку, от хедкрабов отбиваться...

Давайте по теме. Это мать попросила написать для нее, а для меня - это скоротать время. И отдел поддержки пользователей программированием не занимаеся.


 
sniknik ©   (2009-12-10 19:37) [15]

>> выглядит так что он у всех (вставляющего и читающего) компонентов разный.
> Всё правильно.
ну и чего ты хочешь тогда? все правильно, разные объекты = разный кеш буфер = пока один на диск не сольет, а другой не перечитает → разные данные.


 
k0ks   (2009-12-10 19:38) [16]


> один коннекшен на всех.
> один адокомманд на инсерт.
> один адодатасет на селект

И так. про канекшн. Как именно? ведь если не использовать ConnectionString для Query1 то DataSource его не увидит.


 
sniknik ©   (2009-12-10 19:38) [17]

> Давайте по теме.
по теме тебе давно уже дали... не тормози! примени!


 
Медвежонок Пятачок ©   (2009-12-10 19:39) [18]

это называется резервирование.
на АЭС иначе нельзя.
по отдельному коннекту на каждый чих


 
k0ks   (2009-12-10 19:40) [19]

все понял. спасибо всем


 
k0ks   (2009-12-10 19:41) [20]

да там программа 2 строчки 3 запроса. просто всегда делал с sql 2000 и проблем не возникало. но тут увы, сервер не поставишь


 
Медвежонок Пятачок ©   (2009-12-10 19:42) [21]

Уфф...

"Кекс, кажется я спас мир. Два раза"

/* персонаж "Укроп". сериал "Даешь Молодешь" */


 
k0ks   (2009-12-10 19:44) [22]

неа. ты меня спас! Спасиб


 
Anatoly Podgoretsky ©   (2009-12-10 19:53) [23]


> это про то, что проблему решить надо помочь

Ни в коем случае, и так уже страшно.
Какой еще

  DM.ADOConnection1.CommitTrans;

в данном месте.
Какой еще ADOTable1
Какой еще Timer1

Проходи практику без компьютера, можешь руководству сказать, что на ДМ запретили.



Страницы: 1 вся ветка

Текущий архив: 2010.02.07;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.011 c
15-1259875013
AlexDan
2009-12-04 00:16
2010.02.07
Стиль W7 и стандартные компоненты..


1-1236164057
dmitry1208197320
2009-03-04 13:54
2010.02.07
Управление размерами картинки при её вставке в Word


15-1259789646
AlexDan
2009-12-03 00:34
2010.02.07
Переходить ли на W7.. продолжение..


4-1228720579
DmiSbr
2008-12-08 10:16
2010.02.07
Печать на матричный EPSON TM-U950


2-1259775521
Alik
2009-12-02 20:38
2010.02.07
Утечка памяти