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

Тема в разделе "Lotus - Программирование", создана пользователем alb, 13 июл 2007.

  1. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    есть документы созданные по форме tplan а на форме поле dataplan тип дата

    понадобился сранить дату сохраненный в этой форме с другой датой созданный в теле скрипта но выходить ошибка Type mismatch
    делаю так
    пробовал:
    также
    все равно ошибка

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

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

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    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) ) зделать дату
    вот потом и сравнивайте!
     
  3. Domino6

    Domino6 Гость

    <!--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]

    преписать в

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

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    однако не ожидал такого быстрого ответа
    спасибо пошел пробовать
     
  5. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Дабы новую тему не начинать, тут напишу.
    Проблема вот в чём, есть 2а поля Даты (Выбор из календаря), необходимо их сравнить, и если первая дата больше второй, то некоторому полю "Status" присвоить.

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

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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 для твоих документов.
     
  7. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    приведенный код будет срабатывать только один раз при открытии формы..
    используй вычисляемое поле
     
  8. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Medevic, оке, займёмся) тогда такой вопрос, как запретить редактирование документа по двойному клику по ней?при этом оставив возможность редактировать форму нажатием специальной кнопки?
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: kizarek
    Обработать событие документа Querymodechange. Т.е. Создать глобальную переменную. В событии проверять значение переменной и разрешать/запрещать продолжать. По кнопке менять значение переменной.
    Следующий вопрос, наверное, как запретить ctrl-e в представлении? :) Обработать событие документа Queryopen
    Код (Text):
    If Source.EditMode Then Continue = False
     
  10. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Medevic, кхм, а где иенно и как можно объявить глобальную переменную?))Чё то я туплю ужасно(
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    В разделе (Globals) формы. Там в (Declarations).
     
  12. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Ппс, туплю. Объявил глобальную переменную. При открытии формы ей присваивается значение "0"

    Код (Text):
    Sub Postopen(Source As Notesuidocument)
    Let Flag = 0
    End Sub
    соответственно проверка
    Код (Text):
    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
    и кнопка по которой должно таки начать редактироваться:
    Код (Text):
    flag = 1;
    @Command([EditDocument])
    не работает )
     
  13. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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;
    А, во вторых, всё равно работать не будет, т.к. в формуле нельзя обратиться к глобальной переменной. Поэтому делай кнопку на скрипте. :)
     
  14. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Medevic, как всё замудрёно) А полю можно присвоить значение глобальной переменной?)
     
  15. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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]
    Можно. Присваивай. :)
     
  16. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Ч0рд, неумею я кнопки на скрипте делать) Неужели никак без них?)))
     
  17. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: kizarek
    Открываешь хелп. Ищешь там @Command([EditDocument]) и смотришь там аналог на скрипте. Пример тоже есть.
     
  18. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Кхм, а что писать надо в скрипте? Изменение глобального флага? А на кнопке включение работы скрипта? ) Или как , разъясните пжста
     
  19. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Код (Text):
    Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    flag = 1
    Call ws.EditDocument(True)
    End Sub
     
  20. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Этот код работает если кнопка не в активах формы, а например на вьюхе. Если же она на форме, то флаг она не меняет(
     
Загрузка...
Похожие Темы - сравнение дат
  1. k85
    Ответов:
    2
    Просмотров:
    1.149
  2. juk-777
    Ответов:
    29
    Просмотров:
    4.705
  3. Реник
    Ответов:
    0
    Просмотров:
    1.080
  4. Erlan
    Ответов:
    8
    Просмотров:
    1.638
  5. clas
    Ответов:
    3
    Просмотров:
    1.602

Поделиться этой страницей