Ls: Азы

  • Автор темы Автор темы Dimok-163rus
  • Дата начала Дата начала
Спасибо за рекомендации...

У нас проект новый в организации(only Lotus Notes), меня на него поставили, задали сразу задание и вот крутись как хочешь называется, в помощь получил только книжку "Lotus Notes 4 1996г" )
Т.е моё желание не учитывается вовсе :facepalm:
 
Не могу скрыть вторую строчку(время точное) отображения поля даты, в пользовательском режиме, есть идеи? Нужна непосредственна сама дата, без часов/минут/секунд?
Код:
		' дата совета это дата протокола из оригинального документа
Call childDoc.ReplaceItemValue("Data_sovet", parentDoc.GetItemvalue("Data_protokol"))

' дата протокола	 это +182 дня
Call childDoc.ReplaceItemValue("Data_protokol", Cdat(VName.Dateonly))
по манипулировать с функцией Cdat?
Dateonly - только дата же, без показа времени
 
Смотри свойства поля, закладка № 2. Формат отображения.
 

Вложения

  • dateprop.png
    dateprop.png
    6,7 КБ · Просмотры: 631
Там стоит галочка на отображение только даты(в основном документе и отображается только дата без времени), а вот в дочерних доках и то и то... как вставить изображение? Из файла нельзя как я вижу, только url(надо сначала в вэб разместить свой файл jpeg?)
 
Изображения вставляются при ответе на пост, в полном редакторе. В том, который внизу страницы нельзя.
 
Это в представлении отображается. Формула задана так, либо ты там выбрал тип отображения Дата/Время.
Надо смотреть свойства колонки в представлении.
4 вкладка свойств + формулу колонки
 
Это в представлении отображается. Формула задана так, либо ты там выбрал тип отображения Дата/Время.
Надо смотреть свойства колонки в представлении.
4 вкладка свойств + формулу колонки


ага, там тоже изменил, теперь в представлении отображается верно(Представление_designer - файл во вложении),
а в lotus notes (Форма_LN - файл во влож.) по прежнему, в формате дат везде убрал галочки "показывать время"



Добавлено: Получилось, перезапустил ln полностью!
 

Вложения

  • Форма_LN.JPG
    Форма_LN.JPG
    106,3 КБ · Просмотры: 607
  • Представление_designer.JPG
    Представление_designer.JPG
    203,5 КБ · Просмотры: 623
Добавлено: Получилось, перезапустил ln полностью!
В следующий раз попробуй просто Shift + F9
Обычно хватает еще базу переоткрыть, только Designer иногда надо закрывать
 
Необходимо задать конечную дату(пользователь вводит) и программа по этому условию должна оценить, может ли вместится хотя бы одна копия документа(child.doc) в этот промежуток от ParentDoc.data_sovet(родительского) до конечной заданной даты(которую ввел пользователь), при условии, что между ParentDoc.data_sovet и ParentDoc.data_protokol 182 дня разницы... я думаю тут идет речь о цикл в цикле?

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Код_алгоритм"</div></div><div class="sp-body"><div class="sp-content">
Код:
'объявляем переменную
Dim kTime As Variant	

'Окно ручного ввода
kTime = Inputbox("Введите конечную дату", "Создание копий документа","00.00.0000")

'Преобразования типа времени
kTime= Cdat("kTime")

'Усл:

if kTime < ParentDoc.data_protokol Then
Print "Ошибка ввода конечной даты"
Exit Sub
elseif kTime = ParentDoc.data_protokol Then
Print "Конечная дата совпала с ParentDoc.data_protokol, копии не нужны"
' копии не создаем  
n = 0
Exit Sub 

else 
' (высчитываем кол-во копий, которые вместятся в промежуток от parentDoc.data_protokol до kTime)
' (высчитать дни, делим их на 182, n присваиваем результат и создаем n копий)

For i=1 To n

Set VName = New NotesDateTime("" & parentDoc.Getitemvalue("Data_protokol")(0))
Call VName.AdjustDay(182)

Set childDoc = parentDoc.CopyToDatabase( session.CurrentDatabase)

Organ = parentDoc.GetItemValue ("Organ")(0)
childDoc.Organ = Organ+1

' дата совета это дата протокола из оригинального документа
Call childDoc.ReplaceItemValue("Data_sovet", parentDoc.GetItemvalue("Data_protokol"))

' дата протокола	 это +182 дня
Call childDoc.ReplaceItemValue("Data_protokol", Cdat(VName.Dateonly))

Call childDoc.Save(True,False)

Set parentDoc = childDoc

Next

Exit Sub
end if

'Обновляем, чтобы сразу появился в виде
Call ws.ViewRefresh

Алгоритм на ls такой должен быть?
 
'Окно ручного ввода kTime = Inputbox("Введите конечную дату", "Создание копий документа","00.00.0000") 'Преобразования типа времени kTime= Cdat("kTime")
создается диалог на базе формы (с полем типа дата), ибо дата д.б. интернационального формата! и вот этот фокус не пройдет Cdat("...") - просто имя переменной, без кавычек, в случае с формой - не нужно вовсе
попадание в диапазон - создать вьюшку (или две - если надо и для родителя и для чайлда), с ключевой колонкой по дате и получать из неё по NotesDateRange, либо юзать db.Search
 
так мне нужна переменная, куда я смогу вручную забить число 31.01.2013 и потом с ней просто проводить операции сравнения. Разве для этого нужно создать вьюшку? которых у меня итак уже две:
Код:
Dim view As NotesView
Dim UIview As NotesUIView
потом зачем то буду использовать класс NotesDateRange, который мне даст интервал времени :(

Другого способа нет?
 
очень плохо описана задача - ничего не понятно...
то копии нужны, то не нужны, как проверять-то бум - копия есть аль нет? надублировать предполагается (при повторном запуске)?
переменная уже будет из поля! кот. получим из формы, уже в соответствии с локализацией, а у вас тупо формат принятый в России, вводимый руками (на форме можно дата-контрол сделать)

другого способа чего нет?
 
очень плохо описана задача - ничего не понятно...
то копии нужны, то не нужны, как проверять-то бум - копия есть аль нет? надублировать предполагается?
переменная уже будет из поля! кот. получим из формы, уже в соответствии с локализацией, а у вас тупо формат принятый в России, вводимый руками (на форме можно дата-контрол сделать)

другого способа чего нет?

все нужно, это задача продолжается, просто чуть модифицируется:

1) копии прога создает, теперь нужно условие созданий этих копий прописать.

необходимо ввести пользователю дату(свободную, типа дата), вот как я и пробовал сделать с kTime.
в форме есть поля(data_sovet и data_protokol) - в док-те parentDoc
в копиях этого док-та (Эти же поля)...

прилагаю скрин с основным доком и 4 его копиями и весь код:

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"Весь код"</div></div><div class="sp-body"><div class="sp-content">
Код:
Sub Click(Source As Button)

' Если будет ошибка в работе - перейдет на обработчик ошибок
On Error Goto Handler 
'Объявление переменных
'	_________________________________________
Dim session As New NotesSession

Dim ws As New NotesUIWorkspace
Dim UIview As NotesUIView
Dim uidoc As NotesUIDocument

Dim view As NotesView
Dim db As NotesDatabase
Dim doc As NotesDocument

Dim currNoteID As String 
Dim parentDoc As NotesDocument 
Dim childDoc As NotesDocument 

Dim VName As NotesDateTime
Dim n As Integer
Dim i As Integer
Dim kTime As Variant	

'Поля
Dim Organ As Long
Dim Data_sovet As Single
Dim Data_protokol As Single

'Продолжать?	
'	_________________________________________
Dim askme As Variant
askme = ws.Prompt(PROMPT_YESNO, "Вы уверены?", "Сгенерировать документ?")	
If askme=0 Then
Exit Sub
End If

'Подробней об CaretNoteID
currNoteID = ws.CurrentView.CaretNoteID

' документ из представления, копия которого будет сделана
Set parentDoc = session.CurrentDatabase.GetDocumentByID(currNoteID) 

If parentDoc Is Nothing Then Error 5002, "Ошибка при получении основного документа"

'Окно ручного ввода
n = Inputbox("Введите количество копий документа", "Создание копий документа")

'Окно ручного ввода 2
kTime = Inputbox("Введите конечную дату", "Создание копий документа","00.00.0000")

'Преобразования типа времени
'	kTime= Cdat(kTime)

'	If kTime < ParentDoc.data_protokol Then
'	' MsgBox "Ошибка ввода конечной даты"
'		Exit Sub
'	Elseif kTime = ParentDoc.data_protokol Then
'	 ' MsgBox "Конечная дата совпала с ParentDoc.data_protokol, копии не нужны"
'	 ' копии не создаем  
'		n = 0
'		Exit Sub 

'	Else 
'	' (высчитываем кол-во копий, которые вместятся в промежуток от parentDoc.data_protokol до kTime)
'	' (высчитать дни, делим их на 182, n присваиваем результат и создаем n копий)

For i=1 To n

Set VName = New NotesDateTime("" & parentDoc.Getitemvalue("Data_protokol")(0))
Call VName.AdjustDay(182)

Set childDoc = parentDoc.CopyToDatabase( session.CurrentDatabase)

Organ = parentDoc.GetItemValue ("Organ")(0)
childDoc.Organ = Organ+1

' дата совета это дата протокола из оригинального документа
Call childDoc.ReplaceItemValue("Data_sovet", parentDoc.GetItemvalue("Data_protokol"))

' дата протокола	 это +182 дня
Call childDoc.ReplaceItemValue("Data_protokol", Cdat(VName.Dateonly))

Call childDoc.Save(True,False)

Set parentDoc = childDoc

Next
'Обновляем, чтобы сразу появился в виде
Call ws.ViewRefresh

Exit Sub
'	End If

handler:
' Простейший обработчик ошибок
Msgbox "Error:" & Error$ & Chr(10) & Chr(13) & " in line:" & Erl,16
If Not view Is Nothing Then View.AutoUpdate = True ' Это чтобы вернуть автообновление при ошибке.
Resume endh
endh:
End Sub

между data_sovet и data_protokol 182 дня, так вот у меня ругается на тип kTime, спрашиваю, как можно его по другому объявить, чтоб пользователь вводил от руки дату:
Код:
	 'Окно ручного ввода 2
kTime = Inputbox("Введите конечную дату", "Создание копий документа","00.00.0000")

'Преобразования типа времени
'	kTime= Cdat(kTime)
и в дальнейшем я мог юзать эту переменную kTime(со значением даты "00.00.0000"), в условии...
 

Вложения

  • 1.JPG
    1.JPG
    104,2 КБ · Просмотры: 275
яж сказал - не использовать InputBox, заюзать DialogBox (см. хэлп), кот. вызовет форму, где уже указать поля для заполнения
в хэлпе описано (примеры) - как получать значения из полей
если поле типа дата - оттудова и будет получена дата (по индексу 0 GetItemValue), кот. и сунуть объекту NotesDateTime
dt.LSLocalTime=ND.GetItemvalue({dtfield})(0)
где ND - док для диалога

Добавлено:
Set ND=db.CreateDocument
result=ws.DialogBox({myform},..., ND)
if result Then
... получаем поля дока (как указал выше)
 
яж сказал - не использовать InputBox, заюзать DialogBox (см. хэлп), кот. вызовет форму, где уже указать поля для заполнения
в хэлпе описано (примеры) - как получать значения из полей
если поле типа дата - оттудова и будет получена дата (по индексу 0 GetItemValue), кот. и сунуть объекту NotesDateTime
dt.LSLocalTime=ND.GetItemvalue({dtfield})(0)
где ND - док для диалога

Добавлено:
Set ND=db.CreateDocument
result=ws.DialogBox({myform},..., ND)
if result Then
... получаем поля дока (как указал выше)

пробую сначала вместо

Код:
 'Окно ручного ввода
n = Inputbox("Введите количество копий документа", "Создание копий документа")

Код:
Set doc=db.CreateDocument
n=ws.DialogBox("cb",True,True,False,,,,, "Название диалога")

Ругнулся на
Код:
Set doc=db.CreateDocument

Убираю строчку создания дока,

ругается на

Код:
n=ws.DialogBox("emission",True,True,False,,,,, "Название диалога")
Прилагаю скрин ошибки, название формы некорректно?

"emission" - название формы, а ошибка та же
 

Вложения

  • 1.JPG
    1.JPG
    5,2 КБ · Просмотры: 429
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!