Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2015, 11:13   #1
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию Не обновляется в Grid-е

Ребята, помогите с таким вопросом. ADO Query Grid Access
Делаю изменение в записи так:
Код:
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('UPDATE Route SET Status=S  WHERE Id_R =ro');
ADOQuery2.Parameters.ParamByName('S').Value:=Label11.Caption;
ADOQuery2.Parameters.ParamByName('ro').Value:=DBGrid1.DataSource.DataSet.FieldByName('Id_R').AsString;
ADOQuery2.ExecSQL;
затем обновляю содержимое Grid так:
Код:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:=('SELECT * From Route WHERE Data=D');
ADOQuery1.Parameters.ParamByName('D').Value:=FormatDateTime('dd.mm.yyyy',DateTimePicker1.Date);
ADOQuery1.Open;
В базу изменения вносятся, а в Grid-е изменений нет. Если ставлю между этими кодами Sleep(5000), то все нормально появляется и в Grid-е. На MySql работает такой код без пролем, т.е. все обновляется в Grid-е без sleep.
От чего так и как от этого уйти?
lord24 вне форума Ответить с цитированием
Старый 25.06.2015, 11:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Хм... Не сталкивался с таким... Может быть в ADOQuery включено кеширование?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.06.2015, 11:57   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

включаю телепатор...

ADOConnection используется и оба ADOQuery1 и ADOQuery2 подключены через ЕДИНЫЙ ADOConnection ?!

или (ОШИБОЧНО) у каждого свое подключение к БД?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.06.2015, 12:33   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Смотрите что вы пишите
Цитата:
// Обновы таблица "Route" в поля Status заменить на "S" где "Id_R" = ro
ADOQuery2.SQL.Add('UPDATE Route SET Status=S WHERE Id_R =ro');
Если вы хотели так ! зачем это ? ADOQuery2.Parameters.ParamByName('S ').Value:=Label11.Caption;
Вы думайте что вы параметризировали запрос ? на самом деле пишите "=" ... параметры пишется так SET Status=:S и не так Status=S ...........

Код:
ADOQuery2.Parameters.ParamByName('ro').Value:=DBGrid1.DataSource.DataSet.FieldByName('Id_R').AsString;
Это что ? Книгу не читаем -и даже не листаем , понимаю время нету Но, диплом нада конечно , - это подтверждает человек выше образованный я извиняюсь , как вам помощь ?

Последний раз редактировалось xxbesoxx; 25.06.2015 в 12:43.
xxbesoxx вне форума Ответить с цитированием
Старый 25.06.2015, 12:41   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
xxbesoxx
С параметрами действительно что-то ТС нахимичил с кодом. Такой код исключение должен подымать при попытке значения параметру присвоить. Либо синтаксическая SQL ошибка. Что-то не то. Да и Sleep(5000) при каких делах?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.06.2015, 13:01   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Если ставлю между этими кодами Sleep(5000), то все нормально появляется и в Grid-е. На MySql работает такой код без пролем, т.е. все обновляется в Grid-е без sleep.
От чего так и как от этого уйти?
Для Access ответ здесь
А MS SQL все-таки ориентирован на МНОГОпользовательский режим работы. А им таки нужно ЗНАТЬ о чужих (даже если это другая сессия того же пользователя) изменениях в реальном масштабе времени (сразу после подтверждения(Commit-a) оных).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 25.06.2015, 13:15   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

На XE3 параметрый можно писать так Polia =S
Код:
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add (' UPDATE Tab1 SET Polia =S WHERE ID = 2 ' );
    Parameters.ParamByName('S').Value := Trim(Edit1.Text);
    ExecSQL;
  end;
и так тоже Polia =:S
Код:
  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add (' UPDATE Tab1 SET Polia =:S WHERE ID = 2 ' );
    Parameters.ParamByName('S').Value := Trim(Edit1.Text);
    ExecSQL;
  end;
Цитата:
Да и Sleep(5000) при каких делах?
Да, не понято нечего . если MySQL почему не делаеть ХП на UPDATE так
Код:
DELIMITER $$
CREATE PROCEDURE Emp2Update (IN   PE_ID INT,
                             IN   PE_dr_vorker datetime,
                             IN   PE_fio      varchar(30),
                             IN   PE_image      BLOB,
                             IN   PE_p_number  varchar(30),
                             IN   PE_adres  varchar(30),
                             IN   PE_doljnosti  varchar(30),
                             IN   PE_prav_dostup  varchar(30),
                             IN   PE_prava_dost_Num  varchar(30),
                             IN   PE_phone  varchar(30),
                             IN   PE_Login  varchar(30),
                             IN   PE_pasword  varchar(30) )
BEGIN
 UPDATE Employee
 SET
	 E_dr_vorker = PE_dr_vorker,
	 E_fio = PE_fio,
	 E_image = PE_image,
	 E_p_number = PE_p_number,
	 E_adres = PE_adres,
	 E_doljnosti = PE_doljnosti,
	 E_prav_dostup = PE_prav_dostup,
	 E_prava_dost_Num = PE_prava_dost_Num,
	 E_phone = PE_phone,
	 E_Login = PE_Login,
	 E_pasword = PE_pasword
	 WHERE E_id = PE_ID ;
 COMMIT;
END$$
DELIMITER ;
и не вызмваеть потом

Последний раз редактировалось xxbesoxx; 25.06.2015 в 13:18.
xxbesoxx вне форума Ответить с цитированием
Старый 25.06.2015, 14:01   #8
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 107
По умолчанию

ребята, код прекрасно работал на базе mySql, но при переделке на Access был замечен такой прикол, как не обновление Грида. Каждый ADOQuery использует свой ADOConnection.

Сделал так: повесил все на ADOQuery1 и стало все обновляться.

Последний раз редактировалось Stilet; 25.06.2015 в 14:14.
lord24 вне форума Ответить с цитированием
Старый 25.06.2015, 14:12   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
как не обновление Грида
Грид обновляеть или отображаеть данных ?
Цитата:
Каждый ADOQuery использует свой ADOConnection.
Почему "свой ADOConnection" ?
xxbesoxx вне форума Ответить с цитированием
Старый 25.06.2015, 14:14   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Каждый ADOQuery использует свой ADOConnection.
сделайте ОДИН ADOConnection и через него подключайте все свои query.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не обновляется DataGridView megabax C# (си шарп) 1 25.05.2013 18:19
Не обновляется Grid! MeDveD-3A9l C/C++ Базы данных 1 21.01.2013 20:45
Обновляется страница. Predator199 JavaScript, Ajax 9 08.12.2012 03:48
не обновляется DataGridView Kukurudza C# (си шарп) 0 11.03.2012 12:10
Dr. Web 5.0 не обновляется... Smiley Безопасность, Шифрование 9 24.05.2009 15:11