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

Вниз

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

 
Замученный   (2002-12-04 11:23) [0]

существуют 2 программы
1 производит расчет
2 читает эти данные

1 программа все расчитывает и все пишит, все чин чинарем
проблемма в том что при работе со 2 программой даные из БД читаються те ктоторые были в БД на момент запуска 2 программы (будто кэш гдето)
чтение данных для 2 программы организован при помощи хранимой прощедуры

сама хранимая процедура возращает данные коректно (раз 100 проверял через консоль)
а вот в программе что то не то, толи IBQ кэширует то ли вчем еще проблемма
IBQ создаеться динамически

есть след код
MySQL:=TIBQuery.Create(self);
MySql.Database:=DMdataarzem.IBD;
MySql.Transaction:=DMdataarzem.IBT;
With MySql do
begin
close;
SQL.Clear;
SQL.Add("select * from NACISLENO(:kodzempol,:god) order by DATANACH");
open;
..........


 
FreeLancer ©   (2002-12-04 11:27) [1]

Изоляция транзакций - ReadCommited
Читаем только там, где был Commit


 
Замученный   (2002-12-04 11:50) [2]

Это все есть
но результата нет


 
FreeLancer ©   (2002-12-04 11:52) [3]

1. "Программа 1" изменила данные - MySql.Transaction.Commit;
2. "Программа 2" может прочитать эти данные.
Если это не так, то проблема в руках.


 
Замученный   (2002-12-04 11:58) [4]

значит надо руки отрывать!
потомуч то все правильно, по правилам СУБД


 
FreeLancer ©   (2002-12-04 12:03) [5]

Маленькое уточнение:
1. "Программа 1" изменила данные - MySql.Transaction.Commit;
2. "Программа 2" MySql.Transaction.StartTransaction;
3. "Программа 2" может прочитать эти данные.


 
Замученный   (2002-12-04 12:06) [6]

Вот это уже более правдободобно
так на самом деле читает
но внешне не очень красиво, сбрасываеться датасет
приходиться перечитывать выборку

может есть более лольный меод?


 
FreeLancer ©   (2002-12-04 12:12) [7]


MyDataSet.DisableControls;
try
Trans.Commit;
except
Trans.Rollback;
end;
Trans.StartTransaction; {или Active}
if not MyDataSet.Active Then MyDataSet.Active := true;
MyDataSet.EnableControls;

Можно это сделать по IBEventAlert


 
Замученный   (2002-12-04 12:20) [8]

нет не то
я наверное не так выразился
у меня строиться 1 запрос на основании данных пользователя и выводит эти данные в форму
2 запрос берет данные 1 запроса (код) и на основании этого происходит вывод данных
так вот если делать старт транзакции между 1 и 2 запросами то 1 запрос сбрасываеться , если перчитывать 1 запрос то это лишне время
а если только перед 1 то нет гарантии что данные 2 запроса верные


 
Johnmen ©   (2002-12-04 13:15) [9]

1. Даблклик на IBTransaction и ReadCommitted.
2. Вместо Commit делай CommitRetaining
3. НД обновляй по необходимости...




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

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

Наверх




Память: 0.48 MB
Время: 0.017 c
4-75043
Captain
2002-11-10 13:06
2002.12.23
Изменение курсора


6-74877
Romych
2002-10-24 12:26
2002.12.23
Извините что вопрос немного не в тему UDP


3-74583
Gaber
2002-12-04 15:26
2002.12.23
Файлы Exel


3-74623
Nickb hmkgfkuuyhgkl
2002-12-04 04:36
2002.12.23
Как сделать, чтобы в DBgrid при скролинге НЕ перемешался курсор Б


14-74888
vajo
2002-12-02 10:15
2002.12.23
Сеть