Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.53 MB
Время: 0.01 c
14-91037
.: Joiro :.
2002-02-12 21:31
2002.03.28
Кто хочет стать вампиром?


1-90910
ded_di
2002-03-18 13:22
2002.03.28
BDE


4-91121
ctapik-net
2002-01-29 14:18
2002.03.28
Вопрос про Hint


1-90920
DeNN
2002-02-28 21:15
2002.03.28
Как?


3-90746
AnIg
2002-02-28 18:21
2002.03.28
Кто работал с DBChart ? Что за эффект?