Полный физический запрет на редактирование

  • Автор темы SOFTOBZOR.ru
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

SOFTOBZOR.ru

Лотусисты привет!

Задача такая встала

Код:
REM {проверка, на разницу в датах};
p1:=Data;
p2:=Data2;
@if(p1>p2;"Редактирование докумнета зипрещено - истекла дата";"Вы можите отредактировать документ")

Кнопку в панели действия я скрываю благополучно.
Скрывать кнопку если верна форумула
Код:
Data2<Data

Но физически редактирование допустимо, например если пользователь дважды кликнит по доку, появляются поля которые можно изменить.
Подскажите как можно физически запретить любое изменение в документе при условии
Код:
Data2<Data
 
C

CrazyScientist

Обрабатывать событие формы Querymodechange.
 
S

SOFTOBZOR.ru

А.... замечательно, а как это раюотате можно примерчик
 
S

SOFTOBZOR.ru

Я правильно понимаю что надо использовать подобную формулу

Код:
Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
If Not ( source.EditMode ) Then Messagebox( "Извените докумен нельзя изменить") 
continue = False
End If
End Sub

Но почему то лоту ругаеться, не вижу в чем ошибка!
 
P

Proger J.

А откуда берутся даты? Есть возможность сделать поля вычисляемыми? В этом случае их нельзя изменить.
Если все-таки нужно отменять редактирование документа вцелом, попробуй:

Sub Postmodechange(Source As Notesuidocument)
If source.EditMode=True Then
source.EditMode=False
End If
End Sub

Если устроит такой вариант, хорошо :)
 
P

Proger J.

Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
If Not ( source.EditMode ) Then
Msgbox( "Извините докумен нельзя изменить")
continue = False
End If
End Sub
 
S

SOFTOBZOR.ru

Понял, сделал правда как всегда по своему, получилось красиво.
Может кому пригодиться (особенно новичкам, как я)


Создаем в докумнте скрытое поле Status, которое вычисляеться так
[/CODE]
REM {проверка, на разницу в датах};
p1:=Data;
p2:=Data2;
@If(p1>p2;"Closed";"Open")
[/code]


Далее в событии
Код:
Sub Querymodechange(Source As Notesuidocument, _
Continue As Variant)
If Not ( source.EditMode ) Then
currentStatus = source.FieldGetText( "Status" )
If ( currentStatus = "Closed" ) Then
Messagebox _
( "Извените данные докумен нельзя редактировать, истекла дата" )
continue = False
End If
End If
End Sub

И красота, ... особенно приятно осознавать что потихоньку растем :)
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
<!--QuoteBegin-SOFTOBZOR.ru+17:03:2006, 10:09 -->
<span class="vbquote">(SOFTOBZOR.ru @ 17:03:2006, 10:09 )</span><!--QuoteEBegin-->И красота, ... особенно приятно осознавать что потихоньку растем rolleyes.gif
[snapback]31977" rel="nofollow" target="_blank[/snapback]​
[/quote]
А попробуй в представлении на документе, который ты не можешь редактировать, нажать CTRL-E. Интересно, что будет ? :)
 
G

Guest

Хе-хе :)
А какие еще методы запрета редактирования есть?

Мне нравится использовать вычисляемые поля и редактируемые, которые в зависимости от значения поля (статуса дока) и автора то доступны, то нет.
Тоесть если редактирование возможно, то доступно редактируемое поле, если не возможно, то только вычисляемое.
 
S

SOFTOBZOR.ru

<!--QuoteBegin-Medevic+17:03:2006, 10:44 -->
<span class="vbquote">(Medevic @ 17:03:2006, 10:44 )</span><!--QuoteEBegin-->А попробуй в представлении на документе, который ты не можешь редактировать, нажать CTRL-E. Интересно, что будет ? :)
[snapback]31980" rel="nofollow" target="_blank[/snapback]​
[/quote]
А что должно быть:) ???

Картинка прилагаеться
 

Вложения

  • 1.JPG
    1.JPG
    35 КБ · Просмотры: 577
G

Guest

Для: SOFTOBZOR.ru
Medevic говорил о представлении (view).

А что это у тебя за БД такая интересная? :)
Ее откуда-нить можно скачать, чтобы посмотреть поближе?
 
S

SOFTOBZOR.ru

БД - моя. То есть я на ней тренируюсь, вообще ждем внедрения Босс референта, вот готовлюсь потихоньку. Нужно же с чегото начинать.

А как касяк с СTRL + E победить :)
 
G

Guest

Красивая БД. :)

Можно попробовать сделать проверку в PostOpen и переводить док в статус нередактируемый если условие не выполняется.
Счаз попробую. :)
 
G

Guest

О! Помогает вроде. :)

Код:
Sub Postopen(Source As Notesuidocument)
If Not ( source.FieldGetText( "Имя поле" )="Значение" ) Then 
source.EditMode = False
End If
End Sub
 
S

SOFTOBZOR.ru

О! - огромное спасибо!

Может вы еще пообщаетесь со мной в этом топике ->
https://codeby.net/threads/6671/
Я там в самом низу еще один вопрос поднял, что-то не могу понять...
 
S

SOFTOBZOR.ru

Что то у меня не катит,

Код:
Sub Postopen(Source As Notesuidocument)
If Not ( source.FieldGetText( "Status" )="Closed" ) Then 
source.EditMode = False
End If
End Sub

Разместил код на форме.
А при размещении в представлении ругаеться.
Что посоветуете?
 
G

Guest

Разместить в форме.
А куда ты его записал?

+ не убирать код в Querymodechange
Код:
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
If Not ( source.EditMode ) Then 
Messagebox( "Извините докумен нельзя изменить") 
continue = False
End If
End Sub
 

Вложения

  • pic.jpg
    pic.jpg
    20 КБ · Просмотры: 555
S

SOFTOBZOR.ru

Все именно так и сделал, не работает.
Странно ;)
 
G

Guest

Для: SOFTOBZOR.ru
Попробуй убрать в формуле Not.

Код:
Sub Postopen(Source As Notesuidocument)
If ( source.FieldGetText( "Status" )="Closed" ) Then 
source.EditMode = False
End If
End Sub
 
S

SOFTOBZOR.ru

Да заработело, не успел ответить.
Сдел так же.

Спасибо вам большое, что помогли вникнуть.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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