31.07.2006, 14:34 | #1 |
Участник
|
Проблема с messageBox
Всем привет.
Возникла след. проблема. При использовании функции создания строк в заказе нужно производить проверку создаваемых строк и если проверка не проходит, то выдавать MessageBox для пользователя с вопросом типа: "Все равно создать строку?" Да/Нет. Последовательное создание строк в этой функции идет через временную таблицу, которая хранит данные формы Создания строк заполненные пользователем, вот кусочек кода Код: while select tmpFrmVirtual where tmpFrmVirtual.qty { ... salesLine.createLine(...); ... } Если закомментировать вызов MessageBox, то цикл while select проходит без запинок. Может кто сталкивался с чем-то подобным? В чем я не прав? |
|
31.07.2006, 15:25 | #2 |
Гость
|
Сделал job но такой ошибки не получил :-( может дело не в MessageBox?
tmpFrmVirtual tmpFrmVirtual; salesLine salesLine; int i; ; for (i = 0;i< 10; i++) { tmpFrmVirtual.clear(); tmpFrmVirtual.Qty = i; tmpFrmVirtual.insert(); } while select tmpFrmVirtual where tmpFrmVirtual.qty { Box::yesNo('test', DialogButton::Yes, 'test'); } |
|
31.07.2006, 15:30 | #3 |
Участник
|
Нет, дело именно в MessageBox и тем, что он отображается на клиенте. А обработка временной таблицы, видимо, на сервере.
(В смысле, что она на сервере заполнялась) Я сталкивался с подобным, но не помню как решил. Может попробуйте перенести обработку на клиента? |
|
31.07.2006, 15:41 | #4 |
Гость
|
Цитата:
Сообщение от kashperuk
Нет, дело именно в MessageBox и тем, что он отображается на клиенте. А обработка временной таблицы, видимо, на сервере.
(В смысле, что она на сервере заполнялась) Я сталкивался с подобным, но не помню как решил. Может попробуйте перенести обработку на клиента? |
|
31.07.2006, 16:02 | #5 |
Участник
|
Да, проект у меня тоже отрабатывает нормально.
3.0 SP3 Хмм.. |
|
01.08.2006, 06:30 | #6 |
Участник
|
Проект и у меня отрабатывает нормально, значит нужны еще какие-то условия. А какие не могу понять.
У нас 3.0 SP2 делаю в двухзвенке. |
|
01.08.2006, 10:17 | #7 |
Модератор
|
Хм. Как-то, помню, форма диалога, а, возможно, и МессаджБокс приводили к прерыванию транзакции. Попробуй сделать try .. catch и посмотри - возможно, он в catch выскакивает. И еще одна возможная трабла: обрати внимание, что в это время ничего е блокируется. А то пока пользователь курит, а на окошке у него висит "создавать да/нет" таблица может быть заблокирована. Но это так, маленькое примечание. В 4ке рулится
Георгий |
|
01.08.2006, 10:28 | #8 |
Administrator
|
2George: как раз MessageBox приводит к блокировке в отличие от формы диалога. А вот чтобы транзакцию прерывали - это я не слышал.
__________________
Возможно сделать все. Вопрос времени |
|
01.08.2006, 13:09 | #9 |
Участник
|
При любом вызове диалогового окна, во время транзакции происходит прерывание транзакции, если кто смог обойти это, расскажите как, если не секрет )).
|
|
01.08.2006, 13:16 | #10 |
Member
|
Попробуйте UserConnection. Это если чисто технически.
А вообще вам принципиальна именно такая реализация? Что-то я не припомню, чтобы в стандартной Аксапте так делали.
__________________
С уважением, glibs® |
|
01.08.2006, 13:32 | #11 |
Модератор
|
Я думаю, стоит сначала формировать некий RecordSortedList с записями, попадающими по тому или иному критерию. Возможно спрашивать разрешения или при его заполнении, а лучше - сначала сформировать отдельный лист и "скопом" проитись по нему, запрашивая подтверждения.
После того, как такой лист сформирован, в рамках транзакции провести групповую обработку/разноску записей. С Уважением, Георгий |
|
01.08.2006, 21:01 | #12 |
Administrator
|
Цитата:
Сообщение от Andre-ka
При любом вызове диалогового окна, во время транзакции происходит прерывание транзакции
__________________
Возможно сделать все. Вопрос времени |
|
02.08.2006, 06:40 | #13 |
Участник
|
Конструкция примерно такова:
Код: while select tmpFrmVirtual where tmpFrmVirtual.qty { try { ...... salesLine.createLine(...); ... } catch (Exception::Error) { checkFailed("@SYS18447"); } } Менять стандартный while select на RecordSortedList не хотелось бы и уже появился чисто спортивный интерес, почему в указанном выше проекте выборка продолжается, а в описанном мной случае сбрасывается. |
|
03.08.2006, 12:56 | #14 |
Участник
|
дело в том, что надо было после определенных действий, и выплнения некоторых условий спросить у пользователя, что делать дальше, например, только при печати отчета спросить в стандартном диалоговом окне, а печать вызывается из транзакции, это стандартный аксаптовский функционал!, если изменять надо оч. много переписывать!
|
|