Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/133: Рейтинг темы: голосов - 133, средняя оценка - 4.77
kor
1

Dialogbox...

15.06.2006, 16:46. Показов 24458. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Недавно столкнулся с такой проблемкой...
У меня на вьюхе очень много 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)
А может как нибудь ещё проще можно создать дерево для отчётов? структуризировать это всё?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2006, 16:46
Ответы с готовыми решениями:

Dialogbox
Как сделать так, что бы при открытии документа из представления он открывался в DialogBox?

Dialogbox
Подскажите пожалуйста, как сделать (если это возможно), чтобы форма открывалась в небольшом окне...

Dialogbox
Добрый день. Кто знает, подскажите пожалуйста... Проблема в следующем: Есть экшен, который...

Dialogbox
Всем привет! Мне нужно организовать дилог с пользователем... использую DialogBox по опеределенной...

14
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

Код
Call ws.DialogBox(".win.send", True, True, False, False, False, False, "Составление отчёта", doc )
Надо:

Код
b = ws.DialogBox(".win.send", True, True, False, False, False, False, "Составление отчёта", doc )
чтобы проверять, если Cancel нажато.

Какая переменная не установлена? 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
Всё равно выводит ошибку при нажатии кнопки на сабформе - 91Object variable not set
Какая переменная не установлена определить не могу( не запускается почему то дебаггер...
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
Чтобы работал дебаггер во вьюхе, надо включать его, пока база еще закрыта.
ну это уже как истина)) с Errhandle попробую...
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


Кстати, зачем у вас New NotesUIWorkspace 2 раза задается?
копировал кусок кода не заметил... ну это не особо принципиально...
проверку тоже можно сделать...тут дело в том что можно в принципе или нет и если нет то как можно)
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
...
Вариант 2 - зарегистрировать каждый отчет в отдельном документе. При этом названия можно задавать иерархические, как то "Мыло\Хозяйственное"
Далее выбирать из вьюхи, категоризированной по имени отчета
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
Чтобы работал дебаггер во вьюхе, надо включать его, пока база еще закрыта.
Лучше - из другой вьюхи этой-же базы. Иначе попрут события самой базы (PostOpen, Init etc)
0
19.06.2006, 12:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2006, 12:32
Помогаю со студенческими работами здесь

Dialogbox
Использую свои кнопки в форме для DialogBox Call ws.RefreshParentNote Call...

Dialogbox
Использую функцию DialogBox для вывода некоторых документов, но эта серая область с кнопками портит...

Dialogbox
Всем привет! Сломал голову уже... нужно состряпать диалог, во весь экран не зависимо от...

W.dialogbox
Доброго времени суток. У меня вопрос по созданию диалог бокса. Мне нужно его сформировать таким...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru