Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Диалоги Lotus developers, Вопросы и ответы!
Vagor.ini
Вставить ник
сообщение 30:06:2004, 12:21
Цитата Ответить 


MANTICora Software
*****

Группа: Lotus team
Сообщений: 826
Регистрация: 8:08:2003
Из: Минск, Беларусь
Пользователь №: 4
Специализация: Lotus Domino & Notes, Delphi



Репутация: - 1 +


Топик для вопросов и ответов связанных с Lotus продуктами, не требующие длительных рассуждений и отдельных тем.
Подняться вверх 
 
Сообщение #1
23 страниц V  < 1 2 3 4 > »   
Новая тема 
Ответов (30 - 59)
Isk
Вставить ник
сообщение 8:07:2004, 09:08
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 42
Регистрация: 14:04:2004
Пользователь №: 416



Репутация: - 0 +


Помогите. Постараюсь описать проблему подробнее. Есть форма. На ней есть computed subform. В подформе есть кнопка "Проверить". В самой форме есть поле "стат" типа Radio button, в нем 3 значения, по умолчанию стоит одно из значений. Я хотел что бы при нажатии на кнопку "проверить" в форме значение поля "стат" менялось. Подскажите как это можно реализовать? Спасибо.
Подняться вверх 
 
Сообщение #31
Gogan.exe
Вставить ник
сообщение 8:07:2004, 11:01
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 162
Регистрация: 23:04:2004
Из: Ульяновск НГ
Пользователь №: 445



Репутация: - 0 +


Можно в описании поля(радио батон) задать вот такие выборы:
Выбор раз | 1
Выбор дваз | 2
Выбор триз | 3

Затем в кнопке вставить следующую формулу:
Field RadBut := RadBut;
@SetField(“RadBut”; “2”)

Если по умолчанию было выбрано первое поле, то после нажатия кнопки выбор будет на второй. Вроде должен быть…
Подняться вверх 
 
Сообщение #32
Isk
Вставить ник
сообщение 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
nor
Вставить ник
сообщение 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: месяц, год, день и т.д....

Все эти вешчи текстовые smile.gif объединяешь вместе в нужном тебе порядке для получения строки, которая будет служить значением single category в embedded view...
после этого пишешь код, который я выше написал (надеюсь без ошибок) - внедренное представление обновится...


(А в твоем этом отчете пользователь изменяет только дату для получения выборки документов? А что если нужно будет дополнительно указать другие признаки отбора? Как тогда ты будешь выборку отображать?)
__________________________

" Ругается на дату “Keyword must be a single string”." - не знаю даже чем тебе тут помочь, попробуй в свойствах поля поставить Native OS Style, а по умолчанию - пустое значение ""

[B]
Подняться вверх 
 
Сообщение #35
nor
Вставить ник
сообщение 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
Isk
Вставить ник
сообщение 9:07:2004, 02:21
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 42
Регистрация: 14:04:2004
Пользователь №: 416



Репутация: - 0 +


nor Работает, но если док не сохраняешь. А если сохранить, а потом открыть, то в ответ тишина.
Подняться вверх 
 
Сообщение #37
Isk
Вставить ник
сообщение 9:07:2004, 02:38
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 42
Регистрация: 14:04:2004
Пользователь №: 416



Репутация: - 0 +


nor
Gogan.exe
Сорри, все действительно работает, просто торможу.
Подняться вверх 
 
Сообщение #38
Gogan.exe
Вставить ник
сообщение 9:07:2004, 13:24
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 162
Регистрация: 23:04:2004
Из: Ульяновск НГ
Пользователь №: 445



Репутация: - 0 +


Isk
Бывает... :)
Зато как приятно, когда все работает! :)
Подняться вверх 
 
Сообщение #39
Gogan.exe
Вставить ник
сообщение 13:07:2004, 11:54
Цитата Ответить 


Продвинутый
**

Группа: Программист
Сообщений: 162
Регистрация: 23:04:2004
Из: Ульяновск НГ
Пользователь №: 445



Репутация: - 0 +


Люди, хелп!
Почему не работает серч?
Я создал несколько отображений (вьюх). Вверху у них есть серчбар. Ввожу в бар условие (филд «номер» = 2), а он не отображает ни дного документа! В чем дело? Док такой точно есть! Я его вижу перед нажатием Серч. Что я не так сделал?
Подняться вверх 
 
Сообщение #40
Vagor.ini
Вставить ник
сообщение 13:07:2004, 18:04
Цитата Ответить 


MANTICora Software
*****

Группа: Lotus team
Сообщений: 826
Регистрация: 8:08:2003
Из: Минск, Беларусь
Пользователь №: 4
Специализация: Lotus Domino & Notes, Delphi



Репутация: - 1 +


Gogan.exe
Если есть индекс у базы - обнови...
Еще помогает обновление индексов представления (Shift+F9)
Подняться вверх 
 
Сообщение #41
Isk
Вставить ник
сообщение 16:07:2004, 02:39
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 42
Регистрация: 14:04:2004
Пользователь №: 416



Репутация: - 0 +


Народ, помню был пример кода работы с экс-эль, но найти не могу, если не трудно еще раз выложите.
Подняться вверх 
 
Сообщение #42
Vagor.ini
Вставить ник
сообщение 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
Isk
Вставить ник
сообщение 16:07:2004, 10:20
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 42
Регистрация: 14:04:2004
Пользователь №: 416



Репутация: - 0 +


Vagor.ini THANKS!!!
Подняться вверх 
 
Сообщение #44
Гость_Guest_*
сообщение 26:07:2004, 12:33
Цитата Ответить 





Инопланетный гость






Народ, знаю, что это миллион раз обсуждалось, но забыл и снова найти ответа не могу. Как сделать отказ от сохранения? Чтобы при закрытии формы не спрашивалось сохранить или нет, а лучше, чтобы вообще сохранить форму невозможно было. Знаю, что нужно написать SaveOptions := 0, но где это писать?
Кстати, пасибо з совет про преобразование даты в текст - начальник остался доволен результатом :))
Подняться вверх 
 
Сообщение #45
nor
Вставить ник
сообщение 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
Veselinka
Вставить ник
сообщение 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
Andre
Вставить ник
сообщение 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
Veselinka
Вставить ник
сообщение 29:07:2004, 11:25
Цитата Ответить 


Lotus team
**

Группа: Lotus team
Сообщений: 142
Регистрация: 3:03:2004
Из: Новосибирск
Пользователь №: 303
Специализация: Внедрение корпоративных информационных систем



Репутация: - 0 +


полечила затычкой - сделала функцию static
Подняться вверх 
 
Сообщение #49
Isk
Вставить ник
сообщение 30:07:2004, 04:32
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 42
Регистрация: 14:04:2004
Пользователь №: 416



Репутация: - 0 +


Народ, как сделать так чтобы посчитать сколько дней прошло с начала создания документа? то есть перевести так сказать в числовой формат. В хэлпе вроде накопал через Абс, но не работает, все время выдает ошибку, а вообще хотелось бы узнать как это можно сделать на Л скрипте.
Подняться вверх 
 
Сообщение #50
Vagor.ini
Вставить ник
сообщение 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
Isk
Вставить ник
сообщение 30:07:2004, 07:31
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 42
Регистрация: 14:04:2004
Пользователь №: 416



Репутация: - 0 +


Спасибо большое.Vagor.ini
Подняться вверх 
 
Сообщение #52
Andre
Вставить ник
сообщение 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
Isk
Вставить ник
сообщение 30:07:2004, 10:33
Цитата Ответить