Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 25.06.2015, 12:13   #1
lord24
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 101
Репутация: 18
По умолчанию Не обновляется в 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, 12:25   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,960
Репутация: 6799
По умолчанию

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

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

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

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

Смотрите что вы пишите
Цитата:
// Обновы таблица "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;

Это что ? Книгу не читаем -и даже не листаем , понимаю время нету Но, диплом нада конечно , - это подтверждает человек выше образованный я извиняюсь , как вам помощь ?
__________________
E_MAIL: rijgvina7@yahoo.com

Последний раз редактировалось xxbesoxx; 25.06.2015 в 13:43.
xxbesoxx вне форума   Ответить с цитированием
Старый 25.06.2015, 13:41   #5
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 16,802
Репутация: 5909
По умолчанию

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

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

На 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 ;

и не вызмваеть потом
__________________
E_MAIL: rijgvina7@yahoo.com

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

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

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

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

Цитата:
как не обновление Грида
Грид обновляеть или отображаеть данных ?
Цитата:
Каждый ADOQuery использует свой ADOConnection.
Почему "свой ADOConnection" ?
__________________
E_MAIL: rijgvina7@yahoo.com
xxbesoxx вне форума   Ответить с цитированием
Старый 25.06.2015, 15:14   #10
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 22,791
Репутация: 5078
По умолчанию

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не обновляется 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




15:58.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru