сравнение дат

alb

Well-known member
13.07.2005
212
0
#1
есть документы созданные по форме tplan а на форме поле dataplan тип дата

понадобился сранить дату сохраненный в этой форме с другой датой созданный в теле скрипта но выходить ошибка Type mismatch
делаю так
...
dim dt as New NotesDateTime("25/08/"+sdoc.god_postup(0))
...
if tplan.dataplan<=dt then 'здесь и вылетает ошибка
....
пробовал:
if tplan.dataplan(0)<=dt then
также
dim dt1 as New NotesDateTime 'dt1 другая переменная не путайте с dt
Set item=tpdoc.GetFirstItem("dataplan")
Set dt1=item.DateTimeValue
if dt1<=dt then
все равно ошибка

подумал может dt не правильно создается
сделал просто dim dt as New NotesDateTime("25/08/2006")

все равно ошибка

обе даты пробовал присвоит к переменнным типа вариант и сравнить опять ошибка
что я делаю не так
как вообще сравнивать даты лотус скриптом
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
if tplan.dataplan(0)<=dt then - тут вы сравниваете строку с датой,
if tplan.dataplan<=dt then 'здесь и вылетает ошибка - тут вы сравниваете поле с датой

Set item=tpdoc.GetFirstItem("dataplan")
Set dt1=item.DateTimeValue
if dt1<=dt then - тут тоже фигня,


Пользуйтесь дебагером!!!! он покажет какого типа ваша переменная

Datevalue - поможет Вам из строки ( tplan.dataplan(0) ) зделать дату
вот потом и сравнивайте!
 
D

Domino6

#3
<!--QuoteBegin-alb+13:07:2007, 15:29 -->
<span class="vbquote">(alb @ 13:07:2007, 15:29 )</span><!--QuoteEBegin-->if tplan.dataplan<=dt then
[snapback]72232" rel="nofollow" target="_blank[/snapback]​
[/quote]

преписать в

Код:
if cdat(tplan.dataplan(0))<=dt then
 

alb

Well-known member
13.07.2005
212
0
#4
однако не ожидал такого быстрого ответа
спасибо пошел пробовать
 

Kizarek86

Lotus team
20.07.2007
864
4
#5
Дабы новую тему не начинать, тут напишу.
Проблема вот в чём, есть 2а поля Даты (Выбор из календаря), необходимо их сравнить, и если первая дата больше второй, то некоторому полю "Status" присвоить.

Код:
p1 := Tab1_Date;
p2 := Tab1_Date2;
@If (p1>p2; "asdsa"; "asdsad")
такая конструкция в Default Value не работает, т.е. толи даты в переменные p1 и p2 не считывает, толи такое сравнение дат некорректно.

Вообще ток начинаю программировать под Лотус, поэтому такие глупые вопросы. Нужно сделать чтобы запрещалось редактирование документа, если он создан не сегодня, как запретить я разобрался, но вот как определить соответствует введенная в документе дата сегодняшнему дню или нет, и в зависимости от этого присвоить значение полю "Status" не получается.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#6
<!--QuoteBegin-kizarek+20:07:2007, 11:20 -->
<span class="vbquote">(kizarek @ 20:07:2007, 11:20 )</span><!--QuoteEBegin-->Вообще ток начинаю программировать под Лотус, поэтому такие глупые вопросы. Нужно сделать чтобы запрещалось редактирование документа, если он создан не сегодня, как запретить я разобрался, но вот как определить соответствует введенная в документе дата сегодняшнему дню или нет, и в зависимости от этого присвоить значение полю "Status" не получается.
[snapback]72777" rel="nofollow" target="_blank[/snapback]​
[/quote]
Делай сразу по-нормальному. Через поля типа Authors и Readers.
Например, сделай шедульный агент, который каждую ночь будет перекидывать все имена из поля типа Authors в поле типа Readers для твоих документов.
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#7
приведенный код будет срабатывать только один раз при открытии формы..
используй вычисляемое поле
 

Kizarek86

Lotus team
20.07.2007
864
4
#8
Medevic, оке, займёмся) тогда такой вопрос, как запретить редактирование документа по двойному клику по ней?при этом оставив возможность редактировать форму нажатием специальной кнопки?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#9
Для: kizarek
Обработать событие документа Querymodechange. Т.е. Создать глобальную переменную. В событии проверять значение переменной и разрешать/запрещать продолжать. По кнопке менять значение переменной.
Следующий вопрос, наверное, как запретить ctrl-e в представлении? :) Обработать событие документа Queryopen
Код:
If Source.EditMode Then Continue = False
 

Kizarek86

Lotus team
20.07.2007
864
4
#10
Medevic, кхм, а где иенно и как можно объявить глобальную переменную?))Чё то я туплю ужасно(
 

Kizarek86

Lotus team
20.07.2007
864
4
#12
Ппс, туплю. Объявил глобальную переменную. При открытии формы ей присваивается значение "0"

Код:
Sub Postopen(Source As Notesuidocument)
Let Flag = 0
End Sub
соответственно проверка
Код:
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
If ( Flag = 0 ) Then
If  Not ( source.EditMode) Then	
continue = False
End If
End If	
End Sub
и кнопка по которой должно таки начать редактироваться:
Код:
flag = 1;
@Command([EditDocument])
не работает )
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#13
<!--QuoteBegin-kizarek+20:07:2007, 13:24 -->
<span class="vbquote">(kizarek @ 20:07:2007, 13:24 )</span><!--QuoteEBegin-->и кнопка по которой должно таки начать редактироваться:
[snapback]72813" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ну, во-первых, там должен быть оператор присваивания flag := 1;
А, во вторых, всё равно работать не будет, т.к. в формуле нельзя обратиться к глобальной переменной. Поэтому делай кнопку на скрипте. :)
 

Kizarek86

Lotus team
20.07.2007
864
4
#14
Medevic, как всё замудрёно) А полю можно присвоить значение глобальной переменной?)
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#15
<!--QuoteBegin-kizarek+20:07:2007, 13:35 -->
<span class="vbquote">(kizarek @ 20:07:2007, 13:35 )</span><!--QuoteEBegin-->А полю можно присвоить значение глобальной переменной?)

[snapback]72816" rel="nofollow" target="_blank[/snapback]​
[/quote]
Можно. Присваивай. :)
 

Kizarek86

Lotus team
20.07.2007
864
4
#16
Ч0рд, неумею я кнопки на скрипте делать) Неужели никак без них?)))
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#17
Для: kizarek
Открываешь хелп. Ищешь там @Command([EditDocument]) и смотришь там аналог на скрипте. Пример тоже есть.
 

Kizarek86

Lotus team
20.07.2007
864
4
#18
Кхм, а что писать надо в скрипте? Изменение глобального флага? А на кнопке включение работы скрипта? ) Или как , разъясните пжста
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#19
Код:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
flag = 1
Call ws.EditDocument(True)
End Sub
 

Kizarek86

Lotus team
20.07.2007
864
4
#20
Этот код работает если кнопка не в активах формы, а например на вьюхе. Если же она на форме, то флаг она не меняет(