Репликация бд на локал

susinmn

Well-known member
16.10.2007
529
3
#1
Вот суть проблемы: есть база на сервере(архивируется, т.е. *согласованные* документы копирются в архивную бд, а в текущей удаляются)
Так вот некоторый пользователь, скажем год назад, скопировал бд на локал и сегодня еще разок реплицировал) так вот докуенты, которые ушли в архив восстановились?
Как бороться с *восстановлением* документов?))
 

susinmn

Well-known member
16.10.2007
529
3
#3
допустим поставить год...но нет уверенности, что пользователь реплику через год может запустить(
если поставить цисло 10^n, n=много - это ни как не скажется на работе бд?

И еще такой момент: как получить время добавления документа в бд(Added, на 1 закладке свойства документа)?
 

hosm

* so what *
18.05.2009
2 442
6
#4
И еще такой момент: как получить время добавления документа в бд(Added, на 1 закладке свойства документа)?
Вариант через ж, но можно попробовать вычислить время из DXL документа, пример:
<addedtofile><datetime>20090326T180410,39+02</datetime></addedtofile>
 

nvyush

Lotus team
22.04.2009
2 317
0
#6
Как бороться с *восстановлением* документов?))
А если формулу репликации написать с учётом формулы отбора документов для архивирования? Т.е. запретить реплицировать документы, которые теоретически должны быть в архиве. Ну, это если архивирование не вручную, а агентом по расписанию.
 

susinmn

Well-known member
16.10.2007
529
3
#9
скрипт вешаю на кнопку в документе
в (Declarations) пишем

Код:
Private Type timeDateTYPE
innards(0 To 1) As Long
End Type
Declare Private Function W32NSFNoteGetInfo Lib "nnotes" Alias "NSFNoteGetInfo" ( _
Byval hNote As Long, _
Byval noteMember As Integer, _
retValu As Any _
) As Integer 
Declare Private Function W32ConvertTIMEDATEToText Lib "nnotes" Alias "ConvertTIMEDATEToText" ( _
Byval intlFmt As Long, _
Byval txtFmt As Long, _
timeDate As timeDateTYPE, _
Byval retBuff As Lmbcs String, _
Byval maxBuffLen As Integer, _
actBuffLen As Integer _
) As Integer 

Const BUFF_LENGTH% = 32 * 3
Const ERROR_MASK = &H3fff '// see globerr.h
Const BUFFER_SIZE% = 255
Const UNKOWN_ERR_DESC$ = "unknown error"
Dim intLength As Integer
на клик вешаем
Код:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkSpace	
Set uidoc = ws.CurrentDocument 
Set cdoc = uidoc.Document 

Dim tdStruct As timeDateTYPE
Dim intStringLength As Integer
Dim strErrTxt As String
Dim strRetBuff As String * BUFF_LENGTH 

hNote& = cdoc.HANDLE
intRetCode% = W32NSFNoteGetInfo(hNote& , 13, tdStruct)	
intRetCode% = W32ConvertTIMEDATEToText(0&, 0&, tdStruct, strRetBuff$, BUFF_LENGTH, intStringLength%)	
Set pndtAddedInThisFile = New NotesDateTime(Left$(strRetBuff$, intStringLength%))	
End Sub
Вопрос: можно ли без uidoc получать cdoc.HANDLE? Хочу в агенте получить коллекцию

P.s.: Извиняюсь, туплю. Вопрос мой можно закрыть))
 

nvyush

Lotus team
22.04.2009
2 317
0
#10
susinmn
Судя по коду
Код:
Set cdoc = uidoc.Document 
...
hNote& = cdoc.HANDLE
cdoc - NotesDocument. Его необязательно получать из uidoc'а. Можно так
set cdoc = db.GetDocumentByUNID("YourUNID")
Оговорюсь - сам не пробовал, свойство HANDLE у NotesDocument для меня новость.
 

TIA

:-)
Lotus team
15.05.2009
790
3
#11
В агенте по выделенным документам, коллекцию выделенных галками получают через
NotesSession.CurrentDatabase.UnprocessedDocuments

Далее
NotesDocumentCollection.GetFirstDocument и NotesDocumentCollection.GetNextDocument

Получить текущий документ:

NotesSession.DocumentContext
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
271
#12
воще, есть библиотека (Константин публиковал) - не совсем по теме...
http://www.notesnet.ru/library/docid/A81F99
там много чего интересного (в т.ч. - как писать кроссплатформенные вызовы)