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

Вниз

Зависание QRep   Найти похожие ветки 

 
Roma111   (2002-10-04 16:08) [0]

Есть сервер MS2000, сетка 10 мб, установленный на сервере IB6. Программа, написанная на D6 вызывает QRep.Preview. Перед этим я в несколько QLabel этого QRep "вручную" записываю данные: QLabel.caption="....". В локальном режиме все прокатывало нормально. В сетевом периодически на стадии записи в QLabel программа зависает причем с выдачей "дурацкого" сообщения "транзакция активна".

Кто чего подскажет, заранее благодарен...


 
Prooksius ©   (2002-10-04 16:20) [1]

Какими компонентами доступа к базе пользуешься?


 
Roma111   (2002-10-04 16:21) [2]

Прошу прощения,
IBX (IBDatabase, IDTransact, IBQuery)...


 
Prooksius ©   (2002-10-04 16:30) [3]

Сообщение "транзакция активна" значит, что где-то в коде открывается открытая транзакция.
У меня на FIBPlus был такой глюк. В FibDataset было поле Blob. Я его открываю, работаю с ним и вдруг кто-то выдергивает сетевой кабель из компа. :) Все ессно накрывается, но я обрабатываю эту ситуацию - закрываю приложение. Так вот при Destroy этого FIBDataset был глюк, когда база уже закрыта (not connected), а FIBBlobStream (смотрел дебаггером) какого-то хрена пытается запустить транзакцию.
У тебя там нет BLOB-ов?
Попробуй явно закрывать Dataset/Query после отчета.


 
AlexSam   (2002-10-04 16:41) [4]

IBQuery, который выводит данные в QRep (кстати одну запись) прикреплен к отдельной IBTransaction (в программе их несколько) и в блоке последовательно открываю и закрываю транзакцию

IBTransaction.StartTranscation;

...
...

IBTransaction.Commit;

Так что, открытых транзакций быть не может...




 
Roma111   (2002-10-07 09:17) [5]

Может быть, кто еще чего подскажет?


 
Johnmen ©   (2002-10-07 09:28) [6]

Давай подробности -
1. Как получаются данные для QLabel.caption
2. Зависает ли прога иногда или всегда ?
3. Если иногда, то чем этот прогон отличается от безотвального ?


 
Roma111   (2002-10-07 12:54) [7]

Johnmen, привет,

1. Данные для QLabel.caption я получаю из запроса IBQuery.FieldByName("...").AsFloat, после этого данные изменяются обрабатывающей функцией (в поле Numeric(9,2) хранятся деньги, а мне нужно выводить счет в нормальном виде с двумя нулями ми руб. на конце, есть функция, которая формирует строку адреса из полей улицы, дома, корпуса, .... , и т.д.). В зависимости от значений определенных полей мне необходимо делать невидимыми (видимыми) компоненты счета, ... После делаю Preview.

2. На локальном IBase 6.0 проблем никаких не было. При работе с сервером ошибки возникают апериодически, но часто. Я подозреваю, что это из-за скорости сети (10 Мб). Как бы контролировать QReport, считал он данные?

3. Я не понял этот пункт ...


 
Johnmen ©   (2002-10-07 13:33) [8]

Еще накачу немного вопросов -
1. Ты сам управляешь транзакциями ?
2. Ошибка валится до Preview ? после IBQuery.Open ? или где ?

И скорость сети в данном случае неважна...


 
AlexSam   (2002-10-07 13:40) [9]

1. Да, в функция на кнопке печати

IBTransaction.StartTransact;

IBQuery.Open;

QLabel1.Caption:=...
...
QLabelm.Caption:=...
....
--> Ошибка после очередного присваивания (в разных точках)....
....
QLabeln.Caption:=...

QReport.Preview;

IBQuery.close;

IBTransaction.Commit;

Может быть, мне убрать это присваивание (не знаю, использует его кто?). Какие другие методы использовать?


 
Roma111   (2002-10-07 13:40) [10]

1. Да, в функция на кнопке печати

IBTransaction.StartTransact;

IBQuery.Open;

QLabel1.Caption:=...
...
QLabelm.Caption:=...
....
--> Ошибка после очередного присваивания (в разных точках)....
....
QLabeln.Caption:=...

QReport.Preview;

IBQuery.close;

IBTransaction.Commit;

Может быть, мне убрать это присваивание (не знаю, использует его кто?). Какие другие методы использовать?


 
Prooksius ©   (2002-10-07 13:45) [11]

Есть такая штучка - QRDBText (не помню точно названия). Тот же лабел, только DB-aware. Попробуй ее.


 
Johnmen ©   (2002-10-07 13:59) [12]

>Prooksius © (07.10.02 13:45)

В данном случае это не подходит...(см.выше)

>Roma111

Перед IBTransaction.StartTransact; поставь
IBQuery.Close;
if IBTransaction1.InTransaction then IBTransaction1.Commit;

после IBQuery.Open; поставь
IBQuery.FetchAll;

PS Целесообразней один раз стартануть тр-ию и далее делать лишь
IBTransaction1.CommitRetaining и IBTransaction1.RollbackRetaining




 
Roma111   (2002-10-07 14:17) [13]

Johnmen
Спасибо, я попробую, но результаты будут только завтра. Сетка в другом месте.
А IBTransaction1.InTransaction идентична IBTransaction1.Active ?
Если так то при IBTransaction.StartTransact выдавалась бы ошибка, ее нет. IBQuery тоже закрыт.

IBQuery.FetchAll я не пробовал.
IBTransaction1.CommitRetaining и IBTransaction1.RollbackRetaining
тоже...

А вообще там просто много данных, ~100 полей, считываемых из вида, объединяющего несколько таблиц.


 
Johnmen ©   (2002-10-07 14:43) [14]

>А IBTransaction1.InTransaction идентична IBTransaction1.Active ?

Да. Что видно по хелпу :)))

И последний вопрос : Не осуществляется ли управление тр-ми на уровне БД ?


 
Roma111   (2002-10-07 15:11) [15]

Нет, управления транзакциями на уровне БД нет.
В этой программе я использую только запросы в IBQuery.

Мне посоветовали поменять IB 6 на Firebird. Как мнение?


 
Johnmen ©   (2002-10-07 15:21) [16]

Отзывы положительны...
Лично я могу сказать, что производительность выше на 15-20 % (лично тестировал).
При переходе не забудь backup под IB и restore под FB !


 
Roma111   (2002-10-07 15:28) [17]

Johnmen

Ситуацию все интереснее. Я протестировал работу программы с базой на другом серваке P3 800 под NT (был P4 2000 под W2000-Server Rus). Все работает нормально... Я все больше склоняюсь к обвинению W2000.

Что за проблема с Backup? Я бэкапирую программно при помощи IBX (IBBackupService).


 
Johnmen ©   (2002-10-07 15:39) [18]

>Что за проблема с Backup?

Проблем с Backup нет...:)
Проблемы могут появиться с БД, если не сделать backup под IB и restore под FB !


 
Roma111   (2002-10-07 15:42) [19]

То есть, если я перепишу свою базу просто файлом с IB6 на FB1, будут проблемы?


 
Johnmen ©   (2002-10-07 15:51) [20]

Что значит - перепишу ? :)
В смысле - буду использовать .gdb под FB"ом, хотя раньше под IB ?


 
Roma111   (2002-10-07 15:55) [21]

Ну да ...


 
Johnmen ©   (2002-10-07 16:04) [22]

Тогда повторюсь -
Проблемы могут появиться с БД, если не сделать backup под IB и restore под FB !

Т.е. могут возникнуть, а могут и нет....:-)))
Да и вообще, о чем говорим ? Ведь нетрудно один раз сделать b/r... :=)






 
Roma111   (2002-10-07 16:07) [23]

Спасибо, попробую ...


 
Roma111   (2002-10-08 10:48) [24]

Эврика!!!
Я заменил IB6 на Firebird 795 и все заработало ... Никаких ошибок. Единственно, я пока не заметил увеличения быстродействия, но специально не тестировал.


 
Johnmen ©   (2002-10-08 10:51) [25]

Еще говорят, что Yaffil побыстрее и побезглючней...
Не знаю, не проверял. :)


 
Prooksius ©   (2002-10-08 10:55) [26]

Да недавно вышел FB 1.5, правда alpha, подождем до бетты, а там поглядим, кто быстрее ;-)
Вроде бы там даже собираются вводить параметры к эвентам. Посмотрим... :)



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

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

Наверх




Память: 0.53 MB
Время: 0.014 c
4-92811
Spy
2002-09-06 12:25
2002.10.28
Как узнать все открытые на компе mailslot ы?


7-92770
vitandr
2002-08-16 06:00
2002.10.28
DDK + Ctrl2Cap


1-92547
Jel
2002-10-15 17:24
2002.10.28
Окошко, не желающее становиться активным


8-92623
Извращенец
2002-07-01 19:36
2002.10.28
О спрайтах


1-92450
Dasha
2002-10-18 05:17
2002.10.28
RX-Library