Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

изменения значения IBX   Найти похожие ветки 

 
BeginerEmpty   (2005-02-21 11:59) [0]

У меня в потоке работает вот такой код. Поле "статус" при добавлнии стояло равным 0. В этом месте я отслеживаю изменение статуса. Однако когда я IBExpert"ом меняю значение этого поля, ничего не происходит и статус=0 хотя в базе уже другое значение.

В чем может быть дело ???

while not Reciv do
 begin
  Q.Close;
  Q.SQL.Text:="Select * from ExTable where id="+IntToStr(idmon);
  Q.Open;
  if Q.RecordCount>0 then
   if Q.FieldByName("Status").AsInteger<> 0 then
    begin
     Reciv:=False;
    end;
   Sleep(1000);
 end;


 
Sergey13 ©   (2005-02-21 12:03) [1]

В Эксперте комит делаешь?


 
BeginerEmpty   (2005-02-21 12:06) [2]

да, делаю. даже отконекчиваюсь от базы и подключаюсь снова. Значение изменено, но программа не реагирует, показывает 0 в поле статуса.


 
Johnmen ©   (2005-02-21 12:12) [3]

Вот это условие if Q.RecordCount>0 then в данном антураже ВСЕГДА будет возвращать False.


 
BeginerEmpty   (2005-02-21 12:19) [4]

Это условие всегда срабатывает, почему оно не должно срабатывать ? Не срабатывает следующее if Q.FieldByName("Status").AsInteger<> 0
хотя в базе значение поменялось. Может быть что-то связано с CacheUpdate ? я IBX пользуюсь первый раз.


 
Sergey13 ©   (2005-02-21 12:22) [5]

2 BeginerEmpty  
Чему равно Reciv до цикла? Подозреваю что False.
В
  if Q.FieldByName("Status").AsInteger<> 0 then
   begin
    Reciv:=False;
   end;

else не хочешь добавить? Иначе как оно сменится то?
if Q.FieldByName("Status").AsInteger= 0 then  Reciv:=False
 else  Reciv:=True;


 
BeginerEmpty   (2005-02-21 12:26) [6]

спасибо, CacheUpdate поставил вроде все заработало :)


 
BeginerEmpty   (2005-02-21 14:54) [7]

Народ, спасайте !! Не работает ничего. Не видит внешние обновления таблиц которые я делаю в IB Expert"е, хоть трава не расти :((((

Db.Connected:=True;
Tabl.Active:=True;
Q.SQL.Text:="select gen_id(extablegen, 1) from rdb$database";
Q.Open;
idmon:=Q.fieldByName("GEN_ID").AsInteger;
Q.Close;
Tabl.Append;
Tabl.FieldByName("ID").AsInteger:=idmon;
Tabl.FieldByName("TYPE").AsInteger:=0;
Tabl.FieldByName("STATUS").AsInteger:=0;
Tabl.FieldByName("DATA").AsString:=Wht;
Tabl.Post;
IBTransaction1.Commit;

Reciv:=False;
while not Reciv do
 begin
  Q.Close;

  Q.CachedUpdates:=False;
  Q.SQL.Text:="Select * from ExTable where id="+IntToStr(idmon);
  Q.Open;
  if Q.RecordCount>0 then
   if Q.FieldByName("Status").AsInteger<> 0 then
    begin
     Reciv:=True;
    end;
   Sleep(1000);
 end;

Меняю значения поля "статус" но ничего не происходит :((((


 
Sergey13 ©   (2005-02-21 15:23) [8]

А отладчиком по [3] Johnmen ©   (21.02.05 12:12) проверял? Заходит в ветку?


 
BeginerEmpty   (2005-02-21 15:27) [9]

В ветку входит но показывает 0. Попробывал не Query а таблицу. В цикле закрываю ее, открываю заново и ищю по ИД нужную строку. Все равно не видит изменений, хотя SqlExplorer и IBExpert показывают что значение изменилось. такое ощущение что пока база не пересоедениться он эти изменения не видит, видит только свои.


 
Johnmen ©   (2005-02-21 15:30) [10]

>В ветку входит но показывает 0.
>if Q.RecordCount>0 then

?!


 
BeginerEmpty   (2005-02-21 15:42) [11]

нет, recordcount срабатывает нормально, запись он находит. А вот следующую проверку Q.FieldByName("Status").AsInteger не проходит потому что эта сволочь все равно равно 0 :(((( Почему так я не понимаю. Если переподключить базу то все нормально, но это не метод. Я вообще в глубокой депрессии - не знал что можно поймать затык в почти целый рабочий день, хотя когда это кончиться не знаю :((


 
BeginerEmpty   (2005-02-21 15:43) [12]

нет, recordcount срабатывает нормально, запись он находит и там 1. А вот следующую проверку Q.FieldByName("Status").AsInteger не проходит потому что эта сволочь все равно равно 0, хотя в базе она уже другое значение имеет  :(((( Почему так я не понимаю. Если переподключить базу то все нормально, но это не метод. Я вообще в глубокой депрессии - не знал что можно поймать затык в почти целый рабочий день, хотя когда это кончиться не знаю :((


 
Johnmen ©   (2005-02-21 15:50) [13]

>хотя когда это кончиться не знаю :((

А я знаю.
Когда книжку почитаешь по теме...:)


 
Sergey13 ©   (2005-02-21 15:58) [14]

2[12] BeginerEmpty   (21.02.05 15:43)
>нет, recordcount срабатывает нормально, запись он находит и там 1
по твоему recordcount находит запись? Интересное предположение. 8-)
Если уж так приспичило сделай перед   if Q.RecordCount>0 then
Q.FetchAll или Q.Last


 
BeginerEmpty   (2005-02-21 15:59) [15]

Johnmen ©
спасибо за совет :))) Все вроде заработало, я создавал IBTransaction вручную, а оказывается при этом по умолчанию read_commited и no_wait не стоит...

Всем ОГРОМНОЕ спасибо что мне помогли. Жутко когда не знаешь что делать и никто не отвечает ! Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.04 c
1-1110022038
Erl
2005-03-05 14:27
2005.03.20
MDI


8-1102006537
Stiv
2004-12-02 19:55
2005.03.20
формат tga


1-1109783865
msgipss
2005-03-02 20:17
2005.03.20
Помогите создать иерархию, динамической вложенности


3-1108557114
Arazel
2005-02-16 15:31
2005.03.20
Как показать на DELPHI связаную таблицу?


3-1108727470
Kat
2005-02-18 14:51
2005.03.20
Как узнать работает ли кто с БД