Текущий архив: 2002.03.28;
Скачать: CL | DM;
ВнизКак использовать метод Refresh в компоненте IBDataSet Найти похожие ветки
← →
Анатолий (2002-03-04 12:04) [0]В свойствах компонента IBDataSet я описал свойства для работы
с одной таблицей в базе данных InterBase ver 6.0 от 10.01.2001:
SelectSQL :
"select ADRESS, PARAM, VAL_TT from SOSTT"
RefreshSQL :
"Select
ADRESS,
PARAM,
VAL_TT
from SOSTT
where
ADRESS = :ADRESS and
PARAM = :PARAM and
VAL_TT = :VAL_TT"
Далее в программе
применяю метод
...
IBDataSet1.Open;
...
IBDataSet1.Refresh;
...
Программа компилится без ошибок, но набор данных не изменяется,
остается таким,каким был при первоначальной загрузке.
Мастера-коллеги, помогите разобраться в проблеме.
Заранее благодарен , Анатолий.
← →
Alexandr (2002-03-04 12:21) [1]дык естественно.
Ведь если одно из полей изменилось, (что ты хочешь увидеть после refresh), то Refresh не вернет ниодной записи.
Первичного ключа не хватает...
← →
Arhelon (2002-03-04 12:46) [2]Я не совсем понимаю из Твоего кода, что должно измениться с набором данных, но одно могу сказать точно, что DataSet.Refresh с начала времён в Дельфях не работает. Ежли хотишь рефрешнуть то делай Close потом Open.
← →
Анатолий (2002-03-04 12:46) [3]Alexandr, Вы говорите что не хватает первичного ключа,но
если это Primary Key , то он есть,сформирован на этапе создания табиицы по полю ADRESS,которое ктати тоже указано в наборе
данных IBDataSet компонента ... ?!
← →
Arhelon (2002-03-04 12:46) [4]Я не совсем понимаю из Твоего кода, что должно измениться с набором данных, но одно могу сказать точно, что DataSet.Refresh с начала времён в Дельфях не работает. Ежли хотишь рефрешнуть то делай Close потом Open.
← →
Анатолий (2002-03-04 12:47) [5]Alexandr, Вы говорите что не хватает первичного ключа,но
если это Primary Key , то он есть,сформирован на этапе создания табиицы по полю ADRESS,которое ктати тоже указано в наборе
данных IBDataSet компонента ... ?!
← →
Alexandr (2002-03-04 12:53) [6]тогда RefreshSQL делай по этому полю
RefreshSQL :
"Select
ADRESS,
PARAM,
VAL_TT
from SOSTT
where
ADRESS = :ADRESS
да, и транзакция ReadCommited или как там у тебя вообще с транзакциями...
← →
Анатолий (2002-03-04 13:44) [7]Alexandr, а на форму ,в смысле транзакций, брошен компонент
IBTransaction1 со свойством :
DefaultAction:=TACommit;
ReadCommited - такого свойства или метода я в этом компоненте что-то не видел ...
← →
Анатолий (2002-03-04 14:04) [8]Alexandr, я опять к Вам, если вы еще от меня не устали.
Обновление набора данных работает железно в IBDataSet и
в IBTable когда делаешь IBDataSet.Connected:=False, а затем
IBDataSet.Connected:=True. Если этого нет,то и Close/Open
не помогает.Но это не всегда удобно применять в программе ,
поэтому и обратился к ВАМ, мастерам ...
← →
Arhelon (2002-03-04 14:31) [9]У IBDataSet нет такого понятия как Connected он есть у IBDataBase
B когда Ты его меняешь то происходит всё тоже что и когда делаешь Open/Close. Не совсем понимаю что Тя не устраивает в таком способе. Хотя повторюсь Ревреш НЕ РАБОТАЕТ то есть работает но не с базой
← →
Анатолий (2002-03-04 14:44) [10]Arhelon, да, конечно, есть понятие IBDataBase.Connected,
это я описался, первый раз на форум пишу.Значит так тому
и быть,метод Refresh в IBX компонентах при работе с InterBase
не работает,может быть со стандартными из Data Access тоже,
не пробовал.
Спасибо за полезный диалог.
← →
Fareader (2002-03-04 14:44) [11]Перед тем как сделать рефреш сделай
IBTransaction1.CommitReatining
должно помочь.
Чтобы видеть изменения надо либо откатывать транзакцию либо ее подтверждать, CommitReatining - подтверждает изменения, не закрывая датасеты
← →
Анатолий (2002-03-04 14:45) [12]Arhelon, да, конечно, есть понятие IBDataBase.Connected,
это я описался, первый раз на форум пишу.Значит так тому
и быть,метод Refresh в IBX компонентах при работе с InterBase
не работает,может быть со стандартными из Data Access тоже,
не пробовал.
Спасибо за полезный диалог.
← →
Анатолий (2002-03-04 14:46) [13]Arhelon, да, конечно, есть понятие IBDataBase.Connected,
это я описался, первый раз на форум пишу.Значит так тому
и быть,метод Refresh в IBX компонентах при работе с InterBase
не работает,может быть со стандартными из Data Access тоже,
не пробовал.
Спасибо за полезный диалог.
← →
Fareader (2002-03-04 14:47) [14]Перед тем как сделать рефреш сделай
IBTransaction1.CommitReatining
должно помочь.
Чтобы видеть изменения надо либо откатывать транзакцию либо ее подтверждать, CommitReatining - подтверждает изменения, не закрывая датасеты
← →
Анатолий (2002-03-04 15:02) [15]Fareader , не компилится это дело,как вы подсказываете,
я дал код как Вы подсказали :
IBTransaction1.CommitReatining;
затем
IBDataSet.Refresh;
но вот что ВЫШЛО !!!
[Error] Kkp_vvv.pas(281): Undeclared identifier: "CommitReatining"
← →
Alexandr (2002-03-04 15:09) [16]retaining
← →
Arhelon (2002-03-04 15:11) [17]Походу у Тебя IBX не совсем последний. Если вообще он у Тя есть.
← →
Fareader (2002-03-04 15:13) [18]Прошу прощения %)
retaining
Спасибо Alexandr! Ты всегда на страже там где обсуждается InterBase :)
← →
Анатолий (2002-03-04 15:26) [19]Fareader, теперь компилитсяIBTransaction1.CommitRetaining
,но Refesh не обновляет набор,попрежнему,видимо прав Arhelon,Refesh не работает с DataSet компонентами в IB,или он не прав ... мастера ???
← →
Arhelon (2002-03-04 15:44) [20]Я прав потому как ещё с первых Дельфей енто у них такой косяк.
Ежли не хотишь чтоб сильно моргал грид отключай конрол и становись на ту-же запись потом включай.
Рефрешь работает тока для клиента а ежли другой клиент внес какието изменения то рефреш не покажет.
← →
Fareader (2002-03-04 15:51) [21]>Arhelon © Рефрешь работает тока для клиента а ежли другой клиент внес какието изменения то рефреш не покажет
Фигня. Если сделать CommitRetaining, то "качнуться" свежие данные, независимо кто их внес, а по принципу "кто последний - тот и папа" :)
← →
Arhelon (2002-03-04 15:58) [22]Fareader © Насчет фигни не знаю но на практике данные не поднимаются.
← →
Fareader (2002-03-04 16:00) [23]А ты уверен, что вообще что изменилось?
А зачем тебе обновлять только одну запись? Может кто-то изменил еще что-то, а ты видеть не будешь.
← →
Alexandr (2002-03-05 07:16) [24]2Fareader:
>А зачем тебе обновлять только одну запись? Может кто-то изменил >еще что-то, а ты видеть не будешь.
Однако когда как. Иногда надо так, иногда так.
2Arhelon: Бред сивой кобылы. Какого хрена бы не работал Refresh. Так бы и писал "У МЕНЯ рефреш не работает еще с первой версии Delphi, потому что у меня руки не от туда растут" Извини за грубость, но иначе никак нельзя было...
2Анатолий: Есть такой компонент IBSQLMonitor-посмотри чего он при refresh показывает. Разбирайся Все должно быть нормально.
← →
Arhelon (2002-03-05 08:35) [25]ту Alexandr Я Тебе на мало выслал примерчик. Покажи ПЛЗ откеда руки у мня растут
← →
Alexandr (2002-03-05 09:24) [26]я тебе уже ответ выслал
← →
Arhelon (2002-03-05 09:57) [27]Сорри просто про разное говорили.
Я говорои про рефреш кучи записей а не одной.
← →
Alexandr (2002-03-05 10:17) [28]тогда close/open
Страницы: 1 вся ветка
Текущий архив: 2002.03.28;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.006 c