Форум: "Базы";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Внизизменения значения 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.031 c