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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.01.2007, 17:38   #1
doncova1
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 42
Смех почему измененные данные не отображаэтся в дбгриде

Есть 2 таблицы DBGrid1 и DBGrid2, связанные с одной и той же таблицей БД через ADOQuery1 и ADOQuery2 cоответственно
ADOQuery1.SQL выбирает из таблицы все записи где поле semestr=5,
а ADOQuery2.SQL выбирает из таблицы все записи где поле semestr=6
после изменения данных в БД следующим образом записи удаляются из той DBGrid где они были а во вторую не заносятся сразу,
а только после перезапуска программы (т.е. в БД все записывается верно)
case edit1.Tag of
0: begin PS_C.AdoQuery1.Edit; PS_C.AdoQuery1.FieldValues['semestr']:=6;PS_C.AdoQuery1.Post;end;

1:begin PS_C.AdoQuery2.Edit; PS_C.AdoQuery2.FieldValues['semestr']:=5;PS_C.AdoQuery2.Post;end;
end;
PS_C.AdoQuery1.Active:=false;
PS_C.AdoQuery1.Active:=true;
PS_C.AdoQuery2.Active:=false;
PS_C.AdoQuery2.Active:=true;

может я как-то не так сохраняю изменения???

Последний раз редактировалось doncova1; 29.01.2007 в 18:52.
doncova1 вне форума Ответить с цитированием
Старый 30.01.2007, 11:33   #2
Speeker
Форумчанин
 
Аватар для Speeker
 
Регистрация: 01.12.2006
Сообщений: 241
По умолчанию

попробуй использовать еще DBGrid1.Refresh
Програмисты - единственные люди, которым платят за исправления их же ошибок
Speeker вне форума Ответить с цитированием
Старый 30.01.2007, 12:13   #3
doncova1
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 42
По умолчанию

пробовала и refresh и Update ... не помогает
doncova1 вне форума Ответить с цитированием
Старый 30.01.2007, 16:22   #4
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

У источника данных вызови EnableControls, например:
ClientDataSet1.EnableControls;
или
Table1.EnableControls;
zetrix вне форума Ответить с цитированием
Старый 30.01.2007, 21:31   #5
doncova1
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 42
По умолчанию

PS_C.AdoQuery1.EnableControls;
PS_C.AdoQuery2.EnableControls;
не помогает
doncova1 вне форума Ответить с цитированием
Старый 31.01.2007, 01:07   #6
Speeker
Форумчанин
 
Аватар для Speeker
 
Регистрация: 01.12.2006
Сообщений: 241
По умолчанию

Попробуй
Код:
ADOConection.conected:=false;
ADOConection.conected:=true;
PS_C.AdoQuery1.Active:=true;
PS_C.AdoQuery2.Active:=true;
Иначе говоря отсоеденица от базы, и снова подключиться к ней. Способ конечно деревяный, но не видя исходника ничего более путнего придумать не могу
Програмисты - единственные люди, которым платят за исправления их же ошибок
Speeker вне форума Ответить с цитированием
Старый 31.01.2007, 09:47   #7
doncova1
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 42
По умолчанию

ADOConection.conected:=false;
ADOConection.conected:=true;

на это он выдает undeclared identifire
у меня БД подкл через ADOQuery - PS_C.DataSource- DBGrid
doncova1 вне форума Ответить с цитированием
Старый 31.01.2007, 09:58   #8
doncova1
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 42
По умолчанию

PS_C.AdoQuery1.Connection.Connected :=false;
PS_C.AdoQuery1.Connection.Connected :=true;
PS_C.AdoQuery2.Connection.Connected :=false;
PS_C.AdoQuery2.Connection.Connected :=true;
PS_C.AdoQuery1.Active:=false;
PS_C.AdoQuery1.Active:=true;
PS_C.AdoQuery2.Active:=false;
PS_C.AdoQuery2.Active:=true;

на эту запись он сказал
Access violation at adress 0052A986 in module 'MainProject.exe' . Read of adress 00000000

хотя в конечном итоге все перезаписалось...но изменения можно было увидеть толькопосле перезагрузки программы
doncova1 вне форума Ответить с цитированием
Старый 31.01.2007, 10:10   #9
doncova1
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 42
По умолчанию

Может быть в свойствах ADOQuery или PS_C.DataSource или DBGrid есть какие-нибудь поля, запрещающие обнавление.....ну почему-то из одной таблицы данные исчезают, а во второй не появляются?
doncova1 вне форума Ответить с цитированием
Старый 31.01.2007, 18:35   #10
doncova1
Пользователь
 
Регистрация: 19.11.2006
Сообщений: 42
По умолчанию

изменения появляются еще в таком случае:
1)когда тоже самое действие повторить с той же таблицей,
т.е из нее еще раз перенести в другую, тогда во второй таблице проявится предыдущий перенос
2) если в таблицу перенести (оно пока не видно) а потом из нее перенести,
то проявляется то, что при первом переносе не было видно
вообщем запутано, но смысл в том что повторный перенос обновляет данные...
может я не в том порядке расставляю PS_C.AdoQuery9.Edit и PS_C.AdoQuery9.Post?
doncova1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поле выбора в дбгриде Elm0 БД в Delphi 6 14.01.2008 15:15
почему не находит??? vipER Общие вопросы C/C++ 1 26.09.2007 14:26
Почему не работает код? Kashp Общие вопросы Delphi 3 09.08.2007 17:33
Почему? Sota О форуме и сайтах клуба 4 26.07.2007 16:26
Почему так? Сильванович Михаил Общие вопросы C/C++ 2 03.07.2007 11:57