ОБСУЖДЕНИЕ

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

20 ответов 8,6 тыс.
AI-выжимка обсуждения скоро
Статус
Закрыто для дальнейших ответов.
Лотусисты привет!

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

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

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

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

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

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

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

Если устроит такой вариант, хорошо :)
 
Sub Querymodechange (Source As Notesuidocument, Continue As Variant)
If Not ( source.EditMode ) Then
Msgbox( "Извините докумен нельзя изменить")
continue = False
End If
End Sub
 
Понял, сделал правда как всегда по своему, получилось красиво.
Может кому пригодиться (особенно новичкам, как я)


Создаем в докумнте скрытое поле 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

И красота, ... особенно приятно осознавать что потихоньку растем :)
 
<!--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. Интересно, что будет ? :)
 
Хе-хе :)
А какие еще методы запрета редактирования есть?

Мне нравится использовать вычисляемые поля и редактируемые, которые в зависимости от значения поля (статуса дока) и автора то доступны, то нет.
Тоесть если редактирование возможно, то доступно редактируемое поле, если не возможно, то только вычисляемое.
 
<!--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 КБ · Просмотры: 672
Для: SOFTOBZOR.ru
Medevic говорил о представлении (view).

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

А как касяк с СTRL + E победить :)
 
Красивая БД. :)

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

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

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

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

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

+ не убирать код в 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 КБ · Просмотры: 658
Все именно так и сделал, не работает.
Странно ;)
 
Для: SOFTOBZOR.ru
Попробуй убрать в формуле Not.

Код:
Sub Postopen(Source As Notesuidocument)
If ( source.FieldGetText( "Status" )="Closed" ) Then 
source.EditMode = False
End If
End Sub
 
Да заработело, не успел ответить.
Сдел так же.

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

Статистика тем

Создано
SOFTOBZOR.ru,
Последний ответ от
Guest_fedotxxl_*,
Ответы
20
Просмотры
8 603