Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.02.07;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.004 c
2-1260668640
andrewtitoff
2009-12-13 04:44
2010.02.07
БД


2-1260513762
Б
2009-12-11 09:42
2010.02.07
Array char -> String


15-1259865018
andrewtitoff
2009-12-03 21:30
2010.02.07
Кодировка HTTP запросов


15-1258973257
картман
2009-11-23 13:47
2010.02.07
Классификатор


15-1259616617
Юрий
2009-12-01 00:30
2010.02.07
С днем рождения ! 1 декабря 2009 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский