• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

отображение респонсов

  • Автор темы Gor
  • Дата начала
G

Gor

Вот не пойму в чём ошибка может что не так делаю...
ситуация такая...
у документа есть 3 Response document...
все они создаются программно...
на событии Postsave во всех документах висят коды
Код:
Sub Postsave(Source As Notesuidocument)
Dim workspace As New NotesUIWorkspace
Dim User5 As Variant
Dim uidoc As NotesUIDocument

Set uidoc = workspace.CurrentDocument
User5= "DAP"
Call uidoc.FieldSetText( "sap1" ,User5)

End Sub

это пример одного из кодов. Но они все идентичные только в них по закрытию заполняются разные поля разными значениями т.е. в первом к примеру
sap1 - User5 во втором sap2 - user6 итд

У меня есть кнопка в родительском документе которая должна выбирать определённый родительский документ с определённым значением в определённом поле
Код:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim flag As Boolean

Set dc = ws.CurrentDocument.Document.Responses
Set doc = dc.GetLastDocument

flag = False
Do While Not doc Is Nothing
If doc.sap1(0) = "DAP" Then
Call ws.EditDocument(True, doc)
flag = True
Exit	Do
End If
Set doc = dc.GetNextDocument(doc) 
Loop
If Not Flag Then Msgbox "История на данный компьютер отсутствует" 

End Sub
т.е. по идее по кнопке должен выбираться документ значение поля sap1 в котором должно быть равно DAP
а у меня либо документ не находится, либо находится другой Response document для этого родительского в котором поля sap1 и в помине нету!!!
Естественно сохранение Responsa всегда проходит успешно и по первому коду поле заполняется. А вот выборка не проходит....
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Для: Gor
Ошибки.
Во-первых. Событие по закрытию - это QueryClose.
Во-вторых. PostSave происходит после того, как документ сохранен. Следовательно, все твои изменения ("sap1 - User5 во втором sap2 - user6 итд") не сохраняются. Если ты, конечно, вручную не сохранишь. Т.е. делай в QuerySave.
В-третьих. Нафига брать текущий документ uidoc, если текущий документ находится в переменной Source ?
В-четвертых. Сначала ты используешь dc.GetLastDocument (т.е. берешь самый последний документ), а в цикле dc.GetNextDocument(doc) (т.е. берешь следующий документ). Но следующего документа не может быть, т.к. текущий документ - последний.
 
G

Gor

Да конечно по сохранению орисался... Дело в том что у меня документ сохраняется обязательно так построены условия... Но в QuerySave действительно будет лучше...
В-третьих. Нафига брать текущий документ uidoc, если текущий документ находится в переменной Source ?
Вот этого я не совсем понял....а можно немного поподробнее? :)
так мне же надо изменить просто значение поля в текущем респонс документе? и оно по сохранению меняется видно из дебаггера...по этому коду...вроде бы...
В-четвертых. Сначала ты используешь dc.GetLastDocument (т.е. берешь самый последний документ), а в цикле dc.GetNextDocument(doc) (т.е. берешь следующий документ). Но следующего документа не может быть, т.к. текущий документ - последний.
Ааааа....... тогда тут просто надо изменить на dc.GetFirstDocument?
 
G

Gor

Что то я ступиЛЛЛ!!!)) :D
Действительно код поместил в QuerySave исправил на GetFirstDocument и всё заработало!! пасиб огромное!
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
<!--QuoteBegin-Gor+15:09:2005, 07:03 -->
<span class="vbquote">(Gor @ 15:09:2005, 07:03 )</span><!--QuoteEBegin-->Вот этого я не совсем понял....а можно немного поподробнее? ohmy.gif
[snapback]24839" rel="nofollow" target="_blank[/snapback]​
[/quote]
Твой код можно заменить на:
Код:
Sub Postsave(Source As Notesuidocument)
Dim User5 As Variant

User5= "DAP"
Call Source.FieldSetText( "sap1" ,User5)

End Sub
 
Мы в соцсетях:

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