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