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

Вниз

Update   Найти похожие ветки 

 
Mery   (2008-11-17 08:57) [0]

В IBQuery обновляю записи одной таблицы данными другой.
При этом, изменения вижу только после переоткрытия приложения, а не после переоткрытия таблицы в приложении.
В чём может быть проблема?


 
Sergey13 ©   (2008-11-17 09:04) [1]

> [0] Mery   (17.11.08 08:57)
> В чём может быть проблема?

Например в игнорировании транзакций, которые надо подтверждать.


 
Mery   (2008-11-17 09:09) [2]

после серии Update, выполняю CommitRetaining;
А что значит: подтверждать?


 
Sergey13 ©   (2008-11-17 09:13) [3]

> [2] Mery   (17.11.08 09:09)
> после серии Update, выполняю CommitRetaining;

Ты код уже конкретный напиши, а то по понедельникам у меня телепатор в ауте.


 
Mery   (2008-11-17 09:22) [4]

table1.open;
table2.open;

try

QUp.Close;
QUp.SQL.Clear;
QUp.SQL.Add("update table1 set pole1=(select pole1 from table2 where table2.icod=table1.icod) where icod in(select icod from table2)");
QUp.Open;

QUp.Close;
QUp.SQL.Clear;
QUp.SQL.Add("update table1 set pole2=(select pole2 from table2 where table2.icod=table1.icod) where icod in(select icod from table2)");
QUp.Open;

Tran_table1.CommitRetaining;
except
Tran_table1.RollbackRetaining;
exit;
end;


 
Sergey13 ©   (2008-11-17 09:32) [5]

> [4] Mery   (17.11.08 09:22)

Ты деньги тратишь налом из кошелька, а подтверждаешь изменения на банковском счете.
Твой CommitRetaining относится к компоненту table1, а правишь данные ты в физической таблице table2.


 
Mery   (2008-11-17 09:33) [6]

нет, правлю в table1


 
Sergey13 ©   (2008-11-17 09:39) [7]

> [6] Mery   (17.11.08 09:33)

это не важно, я просто не то скопировал. Важно, что ты правишь напрямую в таблице БД, а коммитишь в копоненте IBTable (от которого лучше вообще отказаться в пользу IBDataSet-а), а это далеко не одно и то-же.


 
Mery   (2008-11-17 09:55) [8]

>правишь напрямую в таблице БД, а коммитишь в копоненте IBTable
разве это не одно и то же: IBTable и есть связь  с физической таблицей. как тогда быть? Если использую IBDataSet, вместо IBTable, результат тот же.
Странно. когда всё это делаю в цикле edit-post, то всё нормально. почему с Update так не получается?


 
Sergey13 ©   (2008-11-17 10:01) [9]

> [8] Mery   (17.11.08 09:55)
> Странно. когда всё это делаю в цикле edit-post, то всё нормально.
> почему с Update так не получается?

Ничего странного. Цикл edit-post относится к компоненте и работает ее методами, к которым относится и твой CommitRetaining. Вернее он относится к транзакции, которая, как я понял, привязана к твоей IBTable. А QUp видимо работает в ДРУГОЙ транзакции, которую ты напрямую НЕ подтверждаешь (подтверждение проходит неявно при закрытии приложения). Поэтому из одной транзакции ты вполне логично не видишь неподтвержденные изменения другой транзакции.

ЗЫ: Вообще недурно бы прочитать букварик по транзакциям на ibase.ru


 
MsGuns ©   (2008-11-17 10:55) [10]

Читать про уровни изоляции транзакций


 
Mery   (2008-11-17 11:16) [11]

>Sergey13 ©   (17.11.08 10:01) [9]
> А QUp видимо работает в ДРУГОЙ транзакции
Точно, спасибо, из-за такой ерундовой ошибки больше часа голову ломаю. Что-то меня заклинило..


 
MsGuns ©   (2008-11-17 11:23) [12]

То, что у вас изменение и извлечение для отображения выполняется в РАЗНЫХ транзакция как раз не ошибка, а правильность, во вском случае для ИБ.
Вам необходимо лишь разобраться в том, как их "синхронизировать", что вовсе не является трудной задачей



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

Форум: "Начинающим";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
2-1227018456
abhtr
2008-11-18 17:27
2008.12.28
Как программно создать Paradox таблицу с Table type = Paradox 3.5


15-1225539231
Кое кто
2008-11-01 14:33
2008.12.28
Где можно посмотреть модели очень


2-1226914056
Nameziz
2008-11-17 12:27
2008.12.28
Проблемы с кодировкой


15-1225089571
koha!
2008-10-27 09:39
2008.12.28
А где можно скачать Delph2 or Delphi3 or Deldhi4


9-1176369733
akaValerius
2007-04-12 13:22
2008.12.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский