kor
|
|
1 | |
Dialogbox...15.06.2006, 16:46. Показов 24458. Ответов 14
Метки нет (Все метки)
Недавно столкнулся с такой проблемкой...
У меня на вьюхе очень много Actions для составления отчётов а отчёты все однотипные. Вот захотелось бы как нибудь это структуризировать. Построить некое дерево. Создал кнопку одну на вьюхе которая вызывает - @DialogBox("tree";[AutoHorzFit] :[AutoVertFit] :[NoCancel]:[NoOkCancel];"Составление отчётов"). На Layout Повесил 6 Button - ов с выполнением разных отчётов. И ситуация получилась такая... Когда вызываю Action появляется Dialogbox с моим Layoutom и кнопками для функций... но функции не отрабатываются ошибки одни и теже Object Variable not set. Так вот вопрос такой как сделать так чтобы при нажатии на кнопку расположенную на вызванной Сабформе с определённым названием сначала закрывалась текущая сабформа а уж потом выполнялся отчёт соответствующий данной кнопке а дальше шло определение текущей вьюхи итд итп....В общем то хочется узнать как закрыть программно из LotusScript текущую сабформу а потом сразу перейти к дальнейшим действиям. Ниже приведён пример кода на кнопке расположенной на сабформе (конечно же урезанный) Код
Dim session As New NotesSession Dim db As NotesDatabase Dim cView As String Dim formula As String Dim supplier As String Dim doc As NotesDocument Dim ws As New NotesUIWorkspace Dim p,s,a,f As Variant Set doc = New NotesDocument( session.currentDatabase ) Set ws = New NotesUIWorkspace Set v = ws.CurrentView.View Set db = session.CurrentDatabase Call ws.DialogBox(".win.send", True, True, False, False, False, False, "Составление отчёта", doc ) p = doc.GetItemValue("datanac")(0) p = Right(p,4) + ";" + Left(Right(p,7),2) + ";" + Left(p,2) s = doc.GetItemValue("datakon")(0) s = Right(s,4) + ";" + Left(Right(s,7),2) + ";" + Left(s,2) a = doc.GetItemValue("vnk")(0) f = doc.GetItemValue("vno")(0) |
15.06.2006, 16:46 | |
Ответы с готовыми решениями:
14
Dialogbox Dialogbox Dialogbox Dialogbox |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
15.06.2006, 17:06 | 2 |
Попробуй в кнопки добавить код.
Код
Dim ws As New NotesUIWorkspace Call ws.RefreshParentNote Call ws.CurrentDocument.Close
0
|
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
|
|
15.06.2006, 17:08 | 3 |
Сообщение от Gor
Код
b = ws.DialogBox(".win.send", True, True, False, False, False, False, "Составление отчёта", doc ) Какая переменная не установлена? doc?
0
|
kor
|
|
18.06.2006, 07:59 | 4 |
Добавил в кнопки код
Код
Sub Click(Source As Button) On Error Goto Errhandle Dim session As New NotesSession Dim db As NotesDatabase Dim cView As String Dim formula As String Dim supplier As String Dim vecoll [b]Dim ws As New NotesUIWorkspace[/b] Set ws = New NotesUIWorkspace [b] Call ws.RefreshParentNote Call ws.CurrentDocument.Close[/b] Set v = ws.CurrentView.View Set db = session.CurrentDatabase Какая переменная не установлена определить не могу( не запускается почему то дебаггер... |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
18.06.2006, 09:18 | 5 |
В таких случаях надо в обработчике ошибок сделать вывод номера строки:
Код
Errhandle: Msgbox "Ошибка " + Error$ + " в строке " + Cstr(Erl)
0
|
kor
|
|
18.06.2006, 13:23 | 6 |
Сейчас выводится ошибка NotesUIDocument object is no longer valid при нажатии на кнопку на сабформе(
|
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
|
|
18.06.2006, 13:38 | 7 |
Чтобы работал дебаггер во вьюхе, надо включать его, пока база еще закрыта.
0
|
kor
|
|
18.06.2006, 13:54 | 8 |
|
kor
|
|
18.06.2006, 14:08 | 9 |
Затыкается на 14 строке - Object variable not set...
а при повторном нажатии уже выдаёт ошибку - NotesUIDocument object is no longer valid... Код
Sub Click(Source As Button) On Error Goto Errhandle Dim session As New NotesSession Dim db As NotesDatabase Dim cView As String Dim formula As String Dim supplier As String Dim doc As NotesDocument Dim ws As New NotesUIWorkspace Dim p,s,a,f As Variant Set doc = New NotesDocument( session.currentDatabase ) Set ws = New NotesUIWorkspace Call ws.RefreshParentNote Call ws.CurrentDocument.Close 14 [color=#FF0000]Set v = ws.CurrentView.View 15 Set db = session.CurrentDatabase[/color] Sub click идёт из сабформы....а сабформа вызывется из Actions на вьюхе... |
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
|
|
18.06.2006, 14:15 | 10 |
Для: Gor, а дальше что? Вызываешь другой DialogBox? Если ты хочешь из одного DialogBox вызвать другой и при этом закрыть первый, то, имхо, ничего у тебя не получится.
0
|
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
|
|
18.06.2006, 14:23 | 11 |
Значит, считает, что нет ничего в UI.
Можете проверить if ws.CurrentDocument Is Nothyng then ... Кстати, зачем у вас New NotesUIWorkspace 2 раза задается?
0
|
kor
|
|
18.06.2006, 14:28 | 12 |
Для: Medevic
так и есть...ну по крайней мере задумка была такая....почему нет? а может тогда как нибудь по другому структуризировать отчёты можно? Чтобы во вьюхе не 10 кнопок было на панели а чтобы можно было что нибудь вызвать с перечнем и по перечню перейти (все функции для отчётов строятся по текущей вьюхе)? дерево функций какое нить к примеру? Или я просто мечтаю уже? Просто Dialog Box я хотел использовать именно чтобы оттуда отчёты вызывать по перечню... Для: Elena Nefedova проверку тоже можно сделать...тут дело в том что можно в принципе или нет и если нет то как можно) |
0 / 0 / 0
Регистрация: 12.05.2006
Сообщений: 329
|
|
18.06.2006, 14:39 | 13 |
Вариант 1 - присвоить отчетам некие внутренние номера и выбирать из них
Код
Redym arVariant(200) все лишние пустоты потом уберем с fulltrim arVariant(0) = "Отчет утренний" arVariant(1) = "Отчет дневной" arVariant(2) = "Отчет вечерний" v_variant = ws.Prompt(4, "Выбор отчета", "Укажите название отчета", arVariant(0), Fulltrim(arVariant)) If Isempty(v_variant) Or Isnull(v_variant) Then Goto EndLab v_ind = Arraygetindex(arVariant, Cstr(v_variant)) Код
select case v_ind case 0 ... Далее выбирать из вьюхи, категоризированной по имени отчета
0
|
0 / 0 / 2
Регистрация: 07.05.2005
Сообщений: 743
|
|
18.06.2006, 16:56 | 14 |
Алгоритм
1.Основной код в нем вызов диалога 2.В диалоге простая кнопка без кода которая выставляем признак действия (к примеру поле Action) и закрывает диалог с сохранение (т.е. возврат в основной код) 3. Считиваем код дейсвия и выполняем нужное Смысл весь код в одном месте а из диалога регулируем что выполнять
0
|
0 / 0 / 0
Регистрация: 26.05.2006
Сообщений: 1,313
|
|
19.06.2006, 12:32 | 15 |
Сообщение от Elena Nefedova
0
|
19.06.2006, 12:32 | |
19.06.2006, 12:32 | |
Помогаю со студенческими работами здесь
15
Dialogbox Dialogbox Dialogbox W.dialogbox Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |