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

  • Автор темы Автор темы alb
  • Дата начала Дата начала
A

alb

есть документы созданные по форме 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")

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

обе даты пробовал присвоит к переменнным типа вариант и сравнить опять ошибка
что я делаю не так
как вообще сравнивать даты лотус скриптом
 
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) ) зделать дату
вот потом и сравнивайте!
 
<!--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
 
однако не ожидал такого быстрого ответа
спасибо пошел пробовать
 
Дабы новую тему не начинать, тут напишу.
Проблема вот в чём, есть 2а поля Даты (Выбор из календаря), необходимо их сравнить, и если первая дата больше второй, то некоторому полю "Status" присвоить.

Код:
p1 := Tab1_Date;
p2 := Tab1_Date2;
@If (p1>p2; "asdsa"; "asdsad")

такая конструкция в Default Value не работает, т.е. толи даты в переменные p1 и p2 не считывает, толи такое сравнение дат некорректно.

Вообще ток начинаю программировать под Лотус, поэтому такие глупые вопросы. Нужно сделать чтобы запрещалось редактирование документа, если он создан не сегодня, как запретить я разобрался, но вот как определить соответствует введенная в документе дата сегодняшнему дню или нет, и в зависимости от этого присвоить значение полю "Status" не получается.
 
<!--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 для твоих документов.
 
приведенный код будет срабатывать только один раз при открытии формы..
используй вычисляемое поле
 
Medevic, оке, займёмся) тогда такой вопрос, как запретить редактирование документа по двойному клику по ней?при этом оставив возможность редактировать форму нажатием специальной кнопки?
 
Для: kizarek
Обработать событие документа Querymodechange. Т.е. Создать глобальную переменную. В событии проверять значение переменной и разрешать/запрещать продолжать. По кнопке менять значение переменной.
Следующий вопрос, наверное, как запретить ctrl-e в представлении? :) Обработать событие документа Queryopen
Код:
If Source.EditMode Then Continue = False
 
Medevic, кхм, а где иенно и как можно объявить глобальную переменную?))Чё то я туплю ужасно(
 
Ппс, туплю. Объявил глобальную переменную. При открытии формы ей присваивается значение "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])

не работает )
 
<!--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;
А, во вторых, всё равно работать не будет, т.к. в формуле нельзя обратиться к глобальной переменной. Поэтому делай кнопку на скрипте. :)
 
Medevic, как всё замудрёно) А полю можно присвоить значение глобальной переменной?)
 
<!--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]
Можно. Присваивай. :)
 
Ч0рд, неумею я кнопки на скрипте делать) Неужели никак без них?)))
 
Для: kizarek
Открываешь хелп. Ищешь там @Command([EditDocument]) и смотришь там аналог на скрипте. Пример тоже есть.
 
Кхм, а что писать надо в скрипте? Изменение глобального флага? А на кнопке включение работы скрипта? ) Или как , разъясните пжста
 
Код:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
flag = 1
Call ws.EditDocument(True)
End Sub
 
Этот код работает если кнопка не в активах формы, а например на вьюхе. Если же она на форме, то флаг она не меняет(
 
Мы в соцсетях:

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