Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];

Вниз

Как использовать метод 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.006 c
1-90844
dimich
2002-03-16 10:00
2002.03.28
Поиск файлов?


3-90800
Koks
2002-02-28 12:10
2002.03.28
BatchMove и дата.


1-90974
gek
2002-03-15 08:24
2002.03.28
Как лучше организовать...


3-90729
IronHawk
2002-02-27 11:35
2002.03.28
Приветствую Мастеров ! Вопрос про связь и передачу данных (DBComboBox, DBText, DBGrid, DataSource, Table), что нетак делаеться ?


3-90789
Rub
2002-03-04 11:02
2002.03.28
Как програмно послать почту по русски??? Помогите плиз!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский