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

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

SOFTOBZOR.ru

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

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

Код:
REM {проверка, на разницу в датах};
p1:=Data;
p2:=Data2;
@if(p1>p2;"Редактирование докумнета зипрещено - истекла дата";"Вы можите отредактировать документ")
Кнопку в панели действия я скрываю благополучно.
Скрывать кнопку если верна форумула
Код:
Data2<Data
Но физически редактирование допустимо, например если пользователь дважды кликнит по доку, появляются поля которые можно изменить.
Подскажите как можно физически запретить любое изменение в документе при условии
Код:
Data2<Data
 
S

SOFTOBZOR.ru

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

SOFTOBZOR.ru

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

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

Proger J.

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

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

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

Proger J.

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

SOFTOBZOR.ru

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


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

Что это ? :)
Lotus team
10.12.2004
3 346
1
#8
<!--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

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

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

SOFTOBZOR.ru

#10
<!--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]
А что должно быть:) ???

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

Вложения

  • 40.4 КБ Просмотры: 93
G

Guest

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

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

SOFTOBZOR.ru

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

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

Guest

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

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

Guest

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

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

SOFTOBZOR.ru

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

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

SOFTOBZOR.ru

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

Код:
Sub Postopen(Source As Notesuidocument)
If Not ( source.FieldGetText( "Status" )="Closed" ) Then 
source.EditMode = False
End If
End Sub
Разместил код на форме.
А при размещении в представлении ругаеться.
Что посоветуете?
 
G

Guest

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

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

Вложения

  • 21.9 КБ Просмотры: 68
S

SOFTOBZOR.ru

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

Guest

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

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

SOFTOBZOR.ru

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

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