почему измененные данные не отображаэтся в дбгриде
Гость_dania_*
сообщение 29:01:2007, 17:50
Сообщение #1




      



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

1:begin AdoQuery2.Edit; 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;

может я как-то не так сохраняю изменения???
Перейти в начало страницы
 
Цитата Цитировать сообщение
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 29)
Гость_Barmutik_*
сообщение 30:01:2007, 07:22
Сообщение #2




      



Должно по идее всё работать .. Судя по приведённому Вами куску кода...
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 30:01:2007, 07:40
Сообщение #3




      



а работает только наполовину
пробовала и
PS_C.DBGrid1.Update;
PS_C.DBGrid2.Update;

и

DBGRid1.refresh

тут вообще ничего не меняется ни в одной таблице
Перейти в начало страницы
 
Цитата Цитировать сообщение
Morpheus
сообщение 30:01:2007, 07:58
Сообщение #4
Вставить ник
скриптописец

Иконка группы

Репутация:     94  



Для: dania
Проверте ка не збрасываються ли значения Active/Enabled ... проверте датасорсы


--------------------
Буть осторожен в своих желаниях - они могут сбыться
напиши свой Notes Minder
]]> ]]>
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 30:01:2007, 08:09
Сообщение #5




      



добавила
PS_C.DataSource1.Enabled:=true;
PS_C.DataSource2.Enabled:=true;
никаких измененийsmile.gif
Перейти в начало страницы
 
Цитата Цитировать сообщение
Morpheus
сообщение 30:01:2007, 08:19
Сообщение #6
Вставить ник
скриптописец

Иконка группы

Репутация:     94  



Для: dania
у адоквери тоже сматрите енаблед а потом актив

Сообщение отредактировал Morpheus - 30:01:2007, 08:20


--------------------
Буть осторожен в своих желаниях - они могут сбыться
напиши свой Notes Minder
]]> ]]>
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 30:01:2007, 09:36
Сообщение #7




      



у ADOQuery усть только PS_C.AdoQuery1.EnableBCD ....но установка его после выполнения всех действий в true не дает никакогорезультата

а
PS_C.AdoQuery1.Active:=false;
PS_C.AdoQuery1.Active:=true;
PS_C.AdoQuery2.Active:=false;
PS_C.AdoQuery2.Active:=true;
делала с самого начала...только в первой таблице запись исчезает , а во второй не появляется
если написать
PS_C.AdoQuery1.Active:=true;
PS_C.AdoQuery2.Active:=true;
то вообще ничего не меняется
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_Barmutik_*
сообщение 30:01:2007, 12:46
Сообщение #8




      



Пришлите код программы .. потому как по таким сумбурным объяснениям мало что понятно...
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 30:01:2007, 13:02
Сообщение #9




      



procedure Tper_PS_C.Button1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0:begin
case edit1.Tag of
5: begin PS_C.AdoQuery1.Edit; PS_C.AdoQuery1.FieldValues['semestr']:=6;PS_C.AdoQuery1.Post;end;
6: begin PS_C.AdoQuery2.Edit; PS_C.AdoQuery2.FieldValues['semestr']:=5;PS_C.AdoQuery2.Post;end;
end;
5:begin
case edit1.Tag of
5: begin PS_C.AdoQuery1.Edit; PS_C.AdoQuery1.FieldValues['semestr']:=11;PS_C.AdoQuery1.FieldValues['kurs']:=6;PS_C.AdoQuery1.Post;end;
6: begin PS_C.AdoQuery2.Edit; PS_C.AdoQuery2.FieldValues['semestr']:=11;PS_C.AdoQuery2.FieldValues['kurs']:=6;PS_C.AdoQuery2.Post;end;
end;
end;
PS_C.AdoQuery1.EnableBCD:=true;
PS_C.AdoQuery2.EnableBCD:=true;
//дальше это я робовала все подряд и в разных комбинациях

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

{PS_C.DataSource1.Enabled:=true;
PS_C.DataSource2.Enabled:=true;
PS_C.DBGrid1.Update;
PS_C.DBGrid2.Update; }


end;

это все процедура....
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_Barmutik_*
сообщение 30:01:2007, 16:02
Сообщение #10




      



ну перед тем как пробовать очень полезно бывает почитать Хелп ...
PS_C.AdoQuery1.EnableBCD:=true;
PS_C.AdoQuery2.EnableBCD:=true;


что вообще это значит ...

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

А какие запросы в этих кверях покажите ...
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 30:01:2007, 17:47
Сообщение #11




      



в ADOQuery1 : SELECT * FROM Predmeti WHERE (Kurs = 3) AND (Semestr=5 )
в ADOQuery2 : SELECT * FROM Predmeti WHERE (Kurs = 3) AND (Semestr=6 )

а как еще можно заново обратиться к базе и считать с нее данные?
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_LAW_*
сообщение 31:01:2007, 06:34
Сообщение #12




      



После обновлений сделайте квери рефреш.
Что-то вроде:
Form1->Query1->Refresh();

И в гриде всё обновится в соответствии с текущим набором данных.

Гриду делать рефреш бесполезно. Ведь он не является источником данных.
Удачи.

Сообщение отредактировал LAW - 31:01:2007, 06:36
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_Barmutik_*
сообщение 31:01:2007, 06:43
Сообщение #13




      



По идее

Active := False;
Active := True


работают аналогично Refresh ...
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 31:01:2007, 07:10
Сообщение #14




      



Может быть в свойствах ADOQuery или PS_C.DataSource или DBGrid есть какие-нибудь поля, запрещающие обнавление.....ну почему-то из одной таблицы данные исчезают, а во второй не появляются?
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_Barmutik_*
сообщение 31:01:2007, 08:30
Сообщение #15




      



Да должно быть всё нормально .. какие-то косяки в программе...

Так тяжело сказать... это как лечить запой по фотографии smile.gif
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_LAW_*
сообщение 31:01:2007, 12:34
Сообщение #16




      



А вы посмотрите в файле-то они появились? И всё сразу станет ясно.
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 31:01:2007, 13:01
Сообщение #17




      




Цитата:
(LAW @ 31:01:2007, 14:34 )
 
А вы посмотрите в файле-то они появились?
]]>*]]>


это значит в БД...?
В БД все появляется еще во время работы программы, т.е сразу
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_LAW_*
сообщение 31:01:2007, 13:17
Сообщение #18




      



Тогда обратите внимание на поля грида куды вы выводите таблицу с результатом. может быть у Вас имтосник на исходную таблицу настроен? smile.gif

Прошу прощения не заметил описку.
Я имел ввиду источник.

Сообщение отредактировал LAW - 2:02:2007, 05:51
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 31:01:2007, 14:02
Сообщение #19




      



а что такое имтосник?
дело в том что следущая фраза сразу же вносит обновления в DBGrid без всяких PS_C.AdoQuery1.Active:=false;PS_C.AdoQuery1.Active:=true;PS_C.AdoQuery2.Active:=
false;PS_C.AdoQuery2.Active:=true;


PS_C.ADOQuery1.Append;
PS_C.ADOQuery1.FieldValues['Kurs']:='3';
PS_C.ADOQuery1.FieldValues['Semestr']:='5';
PS_C.ADOQuery1.FieldValues['Predmet']:=edit1.Text;
PS_C.ADOQuery1.Post;

в результате в гриде и в БД появляется новая запись
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 31:01:2007, 15:37
Сообщение #20




      



изменения появляются еще в таком случае:
1)когда тоже самое действие повторить с той же таблицей,
т.е из нее еще раз перенести в другую, тогда во второй таблице проявится предыдущий перенос
2) если в таблицу перенести (оно пока не видно) а потом из нее перенести,
то проявляется то, что при первом переносе не было видно
вообщем запутано, но смысл в том что повторный перенос обновляет данные...
может я не в том порядке расставляю PS_C.AdoQuery9.Edit и PS_C.AdoQuery9.Post?
их лучше вначале и в конце процедуры, или в ветках case ? или не важно....
я вообще по-разному пробовала...?
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_DZX_*
сообщение 1:02:2007, 07:45
Сообщение #21




      



Какая база данных используется? Не InterBase случайно? Как вариант не завершаются транзакции на базе( по умолчанию это так) и поэтому изменения не видны как лекарство закрывать транзакции в ручную при каждом изменении.
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_LAW_*
сообщение 2:02:2007, 05:55
Сообщение #22




      




Цитата:
(dania @ 31:01:2007, 18:37 )
 
вообщем запутано, но смысл в том что повторный перенос обновляет данные...



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

Кстати какая у вас БД?


Цитата:
(DZX @ 1:02:2007, 10:45 )
 
Какая база данных используется? Не InterBase случайно? Как вариант не завершаются транзакции на базе( по умолчанию это так) и поэтому изменения не видны как лекарство закрывать транзакции в ручную при каждом изменении.



Если бы использовался интербейз, то компоненты былы бы IB, а не Ado.
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_Barmutik_*
сообщение 2:02:2007, 06:28
Сообщение #23




      



Если бы была проблема в транзакции то ни в одном бы гриде данные н обновлялись .. а так в первом обновляются а во втором нет ..

Вероятнее всего какие-то косяки в программе...
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 2:02:2007, 07:25
Сообщение #24




      



БД у меня Access ? а изменения на самом деле через раз, а иногда после второго переноса все нормально работает в обну сторону, а во вторую нет...
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_DZX_*
сообщение 2:02:2007, 09:19
Сообщение #25




      



С Access-ом вопрос по транзакциям снимается. Значит всетаки
где то ошибка в программе и надо больше кода...

Для Barmutik

Ситуация с частичным обновлением гридов в случаи с транзакциями типичен.
Т.к. транзакция открывается для каждого запроса
и при определенном режиме изоляции транзакций до момента
принудительного закрытия транзакции данные в базу не
попадут, но отлично будут видны в этой транзации т.е. в
одном гриде. Но как я писал выше это не тот случай и
дядя Билли как обычно взял всю работу на себя.
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_Barmutik_*
сообщение 2:02:2007, 11:56
Сообщение #26




      



Для: DZX

Судя по коду и задваемым вопросам .. человек далёк от понятия транзакция в БД...
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_DZX_*
сообщение 2:02:2007, 12:05
Сообщение #27




      



Для: Barmutik

Согласен smile.gif , скорее всего мелочь какая нибудь, странно что автор не дает исходники, наверно государственная тайна biggrin.gif

Сообщение отредактировал DZX - 2:02:2007, 12:06
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 2:02:2007, 16:31
Сообщение #28




      



Это вовсе не секретsmile.gif
Вот исходник + к delab EHLib...без неко не откроется
На главной странице выбираем специальность, потом на любой закладке на ячейке таблицы правой кнопкой мыши-> перенести предмет на другой семестр...ну а дальше выбираем куда и смотрим на изменения в таблицах, а они очень избирательно появляются: иногда есть, а иногда нетsmile.gif


Это вовсе не секретsmile.gif
Вот исходник + к delab EHLib...без неко не откроется
На главной странице выбираем специальность, потом на любой закладке на ячейке таблицы правой кнопкой мыши-> перенести предмет на другой семестр...ну а дальше выбираем куда и смотрим на изменения в таблицах, а они очень избирательно появляются: иногда есть, а иногда нетsmile.gif
115888.RAR
Скачать файл
Размер: 581,66 килобайт
Скачали раз(а): 138



а вот второй файл с библиотекой EHLib
MainPage.pas - главная
Pochta_C.pas - страница где отображаются дисциплины
engl_lng.pas - на ней после двойного щелчка по ячейке табл отображ все учебные материалы(их краткое описание) в DBGrideh
Perenos_PS_C.pas - перенос предметов из семестра в семестр
Delete_C.pas - удаление предмета
ADD_PS_C.pas - добавление предмета
Ch_Graf_PS_CO.pas - изменение рабочего уч плана
ADD_predmet_PS_C.pas - добавление учебного материала
ну вроде все...если что еще написать, то напишу
410696815 - моя аська
___Delphi.rar
Скачать файл
Размер: 768,97 килобайт
Скачали раз(а): 132

Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_DZX_*
сообщение 2:02:2007, 21:08
Сообщение #29




      



Ужасненько ... сударыня smile.gif,
архив побит, либо ударился по дороге, много не хватает, но
вот что выкопал:
В ADOQuery у вас CursoType = ctStatic
что означает, что изменения производимые в паралельных
запроса не будут видны. Попробуйте поставить его
значение по умолчанию т.е. ctKeyset либо ctDynamic.
Перейти в начало страницы
 
Цитата Цитировать сообщение
Гость_dania_*
сообщение 3:02:2007, 07:46
Сообщение #30




      



Изменила, но ничего нового...по- прежмнему изменяет когда ему вздумается, может нужно установить вctKeyset либо ctDynamic после выполнения всех действий?...только я не понимаю как это знач туда записать) java script:emoticon(':P', 'smid_5')
вот еще экземпляр...если из архива открывать, то не открывается...., а распакованный работает
Metoda.rar
Скачать файл
Размер: 456,54 килобайт
Скачали раз(а): 127



главное EHLib установите, а то действительно много нехватать будет tongue.gif

главное EHLib установите, а то действительно много нехватать будет tongue.gif
Перейти в начало страницы
 
Цитата Цитировать сообщение

Ссылка на тему:
BBCode: 
HTML:      
2 страниц V   1 2 >
Тема закрытаStart new topic


 



1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50
51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100
101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149
150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199
200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216|217|218|219|220|221|222|223|224|225|226|