Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
30:06:2004, 12:21
|
|
MANTICora Software ![]() ![]() ![]() ![]() ![]() Группа: Lotus team Сообщений: 826 Регистрация: 8:08:2003 Из: Минск, Беларусь Пользователь №: 4 Специализация: Lotus Domino & Notes, Delphi Репутация: 1
|
Топик для вопросов и ответов связанных с Lotus продуктами, не требующие длительных рассуждений и отдельных тем.
|
|
Сообщение
#1
|
|
![]() |
|
|
8:07:2004, 09:08
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
Помогите. Постараюсь описать проблему подробнее. Есть форма. На ней есть computed subform. В подформе есть кнопка "Проверить". В самой форме есть поле "стат" типа Radio button, в нем 3 значения, по умолчанию стоит одно из значений. Я хотел что бы при нажатии на кнопку "проверить" в форме значение поля "стат" менялось. Подскажите как это можно реализовать? Спасибо.
|
|
Сообщение
#31
|
|
|
|
8:07:2004, 11:01
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 162 Регистрация: 23:04:2004 Из: Ульяновск НГ Пользователь №: 445 Репутация: 0
|
Можно в описании поля(радио батон) задать вот такие выборы:
Выбор раз | 1 Выбор дваз | 2 Выбор триз | 3 Затем в кнопке вставить следующую формулу: Field RadBut := RadBut; @SetField(“RadBut”; “2”) Если по умолчанию было выбрано первое поле, то после нажатия кнопки выбор будет на второй. Вроде должен быть… |
|
Сообщение
#32
|
|
|
|
8:07:2004, 11:35
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
Gogan.exe Неа не работает. Сама кнопка в подформе находится. То есть ее видно если по условию открывается эта подформа. Как сделать по другому я не знаю.
|
|
Сообщение
#33
|
|
|
Гость_Guest_*
|
8:07:2004, 12:42
|
|
Инопланетный гость |
Цитата(Isk @ 8:07:2004, 14:35 ) Gogan.exe Неа не работает. Сама кнопка в подформе находится. То есть ее видно если по условию открывается эта подформа. Как сделать по другому я не знаю. Опиши задачу подробно, а не тот способ реализации который ты выбрал. Тогда можно будет определиться со способами ее решения |
|
Сообщение
#34
|
|
|
|
8:07:2004, 15:09
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Gogan.exe
dim uidoc as NotesUIDocument dim doc as NoteDocument dim ws as NotesUIWorkspace set ws = new NotesUIWorkspace set uidoc = ws.CurrentDocument set doc = uidoc.Document ..... ..... ' "форма предлагает сохранить и закрыть" - делаем это автоматом doc.SaveOptions = 0 Call doc.Save(true, true) call uidoc.Close set uidoc = ws.EditDocument(true, doc) ___________________________ "Как сказать полю с типом Date, чтобы отображала дату как текст?" - ничего полю говорить не надо, надо преобразовывать значение даты в текстовое значение, как тебе Veselinka говорила, например date_str = Cstr(doc.MyDate(0)) или еще лучше можно воспользоваться свойствами класса NotesDateTime (вроде так называется) и преобразовывать в текст отдельные атрибуты поля типа DateTime: месяц, год, день и т.д.... Все эти вешчи текстовые после этого пишешь код, который я выше написал (надеюсь без ошибок) - внедренное представление обновится... (А в твоем этом отчете пользователь изменяет только дату для получения выборки документов? А что если нужно будет дополнительно указать другие признаки отбора? Как тогда ты будешь выборку отображать?) __________________________ " Ругается на дату “Keyword must be a single string”." - не знаю даже чем тебе тут помочь, попробуй в свойствах поля поставить Native OS Style, а по умолчанию - пустое значение "" [B] |
|
Сообщение
#35
|
|
|
|
8:07:2004, 15:33
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Isk
Я сделал твою кнопку на подформе, которая загружается в форму по условию и по нажатию кнопки изменил значение поля, тип которого RadioButton (поле находится в форме) - все тоже самое, как и Gogan.exe тебе писал ранеее на кнопке код: FIELD stat := stat; @SetField("stat"; "2") "stat" - поле типа RadioButton, значения которого следующие: value1 | 1 value2 | 2 value3 | 3 значение поля по умолчанию "1" |
|
Сообщение
#36
|
|
|
|
9:07:2004, 02:21
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
nor Работает, но если док не сохраняешь. А если сохранить, а потом открыть, то в ответ тишина.
|
|
Сообщение
#37
|
|
|
|
9:07:2004, 02:38
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
nor
Gogan.exe Сорри, все действительно работает, просто торможу. |
|
Сообщение
#38
|
|
|
|
9:07:2004, 13:24
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 162 Регистрация: 23:04:2004 Из: Ульяновск НГ Пользователь №: 445 Репутация: 0
|
Isk
Бывает... :) Зато как приятно, когда все работает! :) |
|
Сообщение
#39
|
|
|
|
13:07:2004, 11:54
|
|
Продвинутый ![]() ![]() Группа: Программист Сообщений: 162 Регистрация: 23:04:2004 Из: Ульяновск НГ Пользователь №: 445 Репутация: 0
|
Люди, хелп!
Почему не работает серч? Я создал несколько отображений (вьюх). Вверху у них есть серчбар. Ввожу в бар условие (филд «номер» = 2), а он не отображает ни дного документа! В чем дело? Док такой точно есть! Я его вижу перед нажатием Серч. Что я не так сделал? |
|
Сообщение
#40
|
|
|
|
13:07:2004, 18:04
|
|
MANTICora Software ![]() ![]() ![]() ![]() ![]() Группа: Lotus team Сообщений: 826 Регистрация: 8:08:2003 Из: Минск, Беларусь Пользователь №: 4 Специализация: Lotus Domino & Notes, Delphi Репутация: 1
|
Gogan.exe
Если есть индекс у базы - обнови... Еще помогает обновление индексов представления (Shift+F9) |
|
Сообщение
#41
|
|
|
|
16:07:2004, 02:39
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
Народ, помню был пример кода работы с экс-эль, но найти не могу, если не трудно еще раз выложите.
|
|
Сообщение
#42
|
|
|
|
16:07:2004, 08:40
|
|
MANTICora Software ![]() ![]() ![]() ![]() ![]() Группа: Lotus team Сообщений: 826 Регистрация: 8:08:2003 Из: Минск, Беларусь Пользователь №: 4 Специализация: Lotus Domino & Notes, Delphi Репутация: 1
|
Обыкновенный пример создание обьекта Excel и работа со свойствами этого обьекта. Пример выгрузки вида в Excel
Код Sub Click(Source As Button)
Dim WS As notesuiworkspace Dim UiView As notesuiview Dim ViewString As String Dim session As NotesSession Dim db As NotesDatabase Dim v As NotesView Dim docX As NotesDocument Dim col As Integer Dim row As Double Dim xl As Variant Dim xlWbk As Variant Dim pagename As String Set WS = New notesuiworkspace Set session = New notessession Set db=session.CurrentDatabase ' Динамически получаеим вид, работает в v5 и выше Set UiView=WS.currentview ViewString=UiView.viewname Set v=db.GetView(ViewString) ' Create Excel Sheet Set xl=CreateObject("Excel.Application") Set xlWbk=xl.Workbooks.Add ' Первая строка с заголовком col=1 Forall vColumn In v.Columns xlWbk.ActiveSheet.Cells(1, col)=vColumn.Title col=col+1 End Forall ' Строки с документами row=2 Set docX=v.GetFirstDocument While Not docX Is Nothing col=1 Forall cValue In docX.ColumnValues xlWbk.ActiveSheet.Cells(row, col)=cValue col=col+1 End Forall row=row+1 Set docX=v.GetNextDocument(docX) Wend ' Заполнение ячеек xlWbk.ActiveSheet.Columns.AutoFit Print "Excel Document Successfully Created!" ' Открываем файл xl.Visible=True End Sub |
|
Сообщение
#43
|
|
|
|
16:07:2004, 10:20
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
Vagor.ini THANKS!!!
|
|
Сообщение
#44
|
|
|
Гость_Guest_*
|
26:07:2004, 12:33
|
|
Инопланетный гость |
Народ, знаю, что это миллион раз обсуждалось, но забыл и снова найти ответа не могу. Как сделать отказ от сохранения? Чтобы при закрытии формы не спрашивалось сохранить или нет, а лучше, чтобы вообще сохранить форму невозможно было. Знаю, что нужно написать SaveOptions := 0, но где это писать?
Кстати, пасибо з совет про преобразование даты в текст - начальник остался доволен результатом :)) |
|
Сообщение
#45
|
|
|
|
26:07:2004, 14:28
|
|
Lotus master ![]() ![]() ![]() Группа: Модеры Сообщений: 344 Регистрация: 10:04:2004 Пользователь №: 398 Специализация: Lotus Notes/Domino developer, IBA JV, Minsk, RB Репутация: 5
|
Что бы запретить сохранение формы необходимо в событии QuerySave параметру Continue присвоить 0 (нуль).
Чтобы при закрытии формы не спрашивало сохранить ли документ, необходимо doc.SaveOptions = 0 прописать в событии формы PostOpen или, например в теле скрипта, если с документом работает агент, например: .... doc.item1 = "value1" doc.item2 = "value2" .... .... doc.SaveOptions = 0 doc.Save(True, True) .... ___________________ (doc - текущий документ NotesDocument) |
|
Сообщение
#46
|
|
|
|
29:07:2004, 06:59
|
|
Lotus team ![]() ![]() Группа: Lotus team Сообщений: 142 Регистрация: 3:03:2004 Из: Новосибирск Пользователь №: 303 Специализация: Внедрение корпоративных информационных систем Репутация: 0
|
привет Народ, второй день не могу понять в чем проблема:
версия как R5, так и R6.5 Есть код функции, который находит некоторый документ и возвращает либо его либо Nothing. Если эту функцию проходишь в дебагере по шагам - то она возвращает документ, а если ее не проходишь, то документ она находит (выяснено методом отладки со вставкой месаджбоксов), но она его НЕ ВОЗВРАЩАЕТ. То есть когда из функции происходит возврат - значение указателя обнуляется. Вот код функции - он обходит адресные книги и проверяет - является ли данное имя группой или нет Function ISGr(grname) As Notesdocument Set ISGr=Nothing Dim session As New NotesSession abs_ =session.addressBooks Forall ab In abs_ Set adb=New Notesdatabase(ab.server,ab.filepath) If adb.Isopen() Then Set view=adb.GetView("($VIMGroups)") If Not view Is Nothing Then Call view.refresh Set gdoc1=view.getdocumentbykey(grname,True) If Not gdoc1 Is Nothing Then Set ISGr=gdoc1 Exit Function End If End If End If End Forall End Function Если есть какие-либо мысли на счет того как это может быть - пишите плиз |
|
Сообщение
#47
|
|
|
|
29:07:2004, 09:13
|
|
Новенький ![]() Группа: Программист Сообщений: 90 Регистрация: 29:07:2004 Пользователь №: 727 Репутация: 0
|
Цитата(Veselinka @ 29:07:2004, 09:59 ) привет Народ, второй день не могу понять в чем проблема: версия как R5, так и R6.5 Есть код функции, который находит некоторый документ и возвращает либо его либо Nothing. Если эту функцию проходишь в дебагере по шагам - то она возвращает документ, а если ее не проходишь, то документ она находит (выяснено методом отладки со вставкой месаджбоксов), но она его НЕ ВОЗВРАЩАЕТ. То есть когда из функции происходит возврат - значение указателя обнуляется. Вот код функции - он обходит адресные книги и проверяет - является ли данное имя группой или нет Function ISGr(grname) As Notesdocument Set ISGr=Nothing Dim session As New NotesSession abs_ =session.addressBooks Forall ab In abs_ Set adb=New Notesdatabase(ab.server,ab.filepath) If adb.Isopen() Then Set view=adb.GetView("($VIMGroups)") If Not view Is Nothing Then Call view.refresh Set gdoc1=view.getdocumentbykey(grname,True) If Not gdoc1 Is Nothing Then Set ISGr=gdoc1 Exit Function End If End If End If End Forall End Function Если есть какие-либо мысли на счет того как это может быть - пишите плиз Есть мысля, как такое может быть. На такие же грабли сам наступал Имхо проблема в том, что как только функция возвращает результат, а результатом является документ из другой базы, то ссылка на саму базу уничтожается, и соответственно чтобы не оставлять мусора в памяти уничтожаются все подчиненные этой базе объекты, в том числе и найденный документ. И как только управление переходит за пределы функции - возвращаемого объекта в памяти больше НЕТ. Имхо отсюда ноги и растут. |
|
Сообщение
#48
|
|
|
|
29:07:2004, 11:25
|
|
Lotus team ![]() ![]() Группа: Lotus team Сообщений: 142 Регистрация: 3:03:2004 Из: Новосибирск Пользователь №: 303 Специализация: Внедрение корпоративных информационных систем Репутация: 0
|
полечила затычкой - сделала функцию static
|
|
Сообщение
#49
|
|
|
|
30:07:2004, 04:32
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
Народ, как сделать так чтобы посчитать сколько дней прошло с начала создания документа? то есть перевести так сказать в числовой формат. В хэлпе вроде накопал через Абс, но не работает, все время выдает ошибку, а вообще хотелось бы узнать как это можно сделать на Л скрипте.
|
|
Сообщение
#50
|
|
|
|
30:07:2004, 07:04
|
|
MANTICora Software ![]() ![]() ![]() ![]() ![]() Группа: Lotus team Сообщений: 826 Регистрация: 8:08:2003 Из: Минск, Беларусь Пользователь №: 4 Специализация: Lotus Domino & Notes, Delphi Репутация: 1
|
Isk
Есть у меня пример такого скрипта (с буржуйского сайта): Скрипт определяющий количество дней между двумя датами (исключая выходные и праздники) Для него нужно создать вид "holiday" где загнать все праздники и библиотеку со слудующей функцией: Код 'declarations
Dim Date1 As notesdatetime Dim Date2 As notesdatetime Set Date1 = New notesdatetime(doc.FirstDate(0)) Set Date2 =New notesdatetime(doc.SecondDate(0)) Differ# = Date2.TimeDifference(Date1) If Differ# > 0 Then Days% = Differ# / 86400 Days% = CycleTimeDate1,Date2,days%) doc.CT1 = Days% 'where CT1 is a Field to capture the difference and store it in a form Else doc.CT1 = 0 End If In a Library create a function "Cycletime" Function CycleTime(Date1 As notesdatetime, Date2 As notesdatetime,days As Integer) Dim hdoc As notesdocument Dim view As notesview Dim Y As Integer,x As Integer Set ses = New notessession Set Cdb = ses.currentdatabase Set view = Cdb.getview("holiday") x% = days% Y% = 0 Do Until Y% = x% Y% = Y%+ 1 Call Date1.AdjustDay(1) Wday1$ = Cstr(Date1.LocalTime) Set hdoc = view.getdocumentbykey(Wday1$ ) If Not hdoc Is Nothing Or Weekday(Date1.DateOnly)=1 Or Weekday(Date1.DateOnly)= 7 Then days% = days% - 1 CycleTime = days% Else CycleTime = days% End If Loop End Function |
|
Сообщение
#51
|
|
|
|
30:07:2004, 07:31
|
|
Новенький ![]() Группа: Программист Сообщений: 42 Регистрация: 14:04:2004 Пользователь №: 416 Репутация: 0
|
Спасибо большое.Vagor.ini
|
|
Сообщение
#52
|
|
|
|
30:07:2004, 08:45
|
|
Новенький ![]() Группа: Программист Сообщений: 90 Регистрация: 29:07:2004 Пользователь №: 727 Репутация: 0
|
Имхо можно гораздо проще
dim res as variant Dim doc As Notesdocument ' определяем документ set doc = ... Res = Evaluate (|(@today - @Created)/3600/24|, doc) Print "Количество дней между датами " + Cstr(Res(0)) Вуаля. |
|
Сообщение
#53
|
|
|
|
30:07:2004, 10:33
|