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

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

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

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

обновление

  • Автор темы IrinaK
  • Дата начала
I

IrinaK

Почему так! Есть форма, в которую вносятся данные, есть форма поиска по полям, когда начинаешь поиск - находит только тех кто был внесен давно (при этом данные вносятся в одну и ту же форму )?! Как обновить форму поиска, чтобы он видел всех!?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Что за поиск? Полнотекстовый? Тогда нужно время для обновления индекса.

Или ты про @DbLookup? Тогда используй NoCache:
@DbLookup("" : "NoCache"; ...)
 
I

IrinaK

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

IrinaK

если честно, то я не знаю..... Я с Лотусом впервые столкнулась, надо базу сделать.... Вот все что в голову приходит, то и делаю, все с помощью HELPа
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Ну тогда предлагаю посмотреть код той кнопочки.

Хотя всё равно не понятно. Что такое таблица? Может это представление?
Может это стандартный поиск? Если не знаешь, то пришли скриншот кнопки. :)
 
I

IrinaK

Вот сам поиск:
Код:
Sub SrhMain
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document


Dim QueryNotes As String		
Dim QueryUser As String		

Dim vSrhObject As Variant
vSrhObject = SrhObject(uidoc.FieldGetText( "cSrhObject" ) )
QueryNotes=vSrhObject(0) 
QueryUser=vSrhObject(1) & Chr(13)

Dim CategoryFieldDesc(0 To 2,0 To 10, 0 To 2)As String			

' 	Б: 0
CategoryFieldDesc(0,0,0) = Fam_FIELD
CategoryFieldDesc(1,0,0) = Fam_DESC
CategoryFieldDesc(2,0,0) = "cSrhFam"
'	Б:	1
CategoryFieldDesc(0,1,0) = Pidp_FIELD
CategoryFieldDesc(1,1,0) = Pidp_DESC
CategoryFieldDesc(2,1,0) = "cSrhSName"
'	Б:	2														
CategoryFieldDesc(0,2,0) = Tel_FIELD
CategoryFieldDesc(1,2,0) = Tel_DESC
CategoryFieldDesc(2,2,0) = "cSrhPhone"	
……………….


Dim CategoryIndex As Integer 
Dim vSrhCategory As Variant
Dim bSrhObject As Integer 

For CategoryIndex = Lbound(CategoryFieldDesc,2) To Ubound(CategoryFieldDesc,2)
bSrhObject = Cint(vSrhObject(2))
If Not(CategoryFieldDesc(0,CategoryIndex,0)="") Then	bSrhObject = 0 
If Not(CategoryFieldDesc (1,CategoryIndex,bSrhObject) = "") Then
vSrhCategory = SrhCategory (doc,CategoryFieldDesc(2,CategoryIndex,bSrhObject),CategoryFieldDesc(0,CategoryIndex,bSrhObject), CategoryFieldDesc(1,CategoryIndex,bSrhObject))
If Not(vSrhCategory(0)="") Then
QueryNotes = QueryNotes & BOOL_OPERATOR_EXT & "(" & vSrhCategory(0) & ")"
QueryUser = QueryUser & vSrhCategory(1) & Chr(13)
End If		
End If
Next
'******************************************	


Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim collectionSearch As NotesDocumentCollection
Set db = session.CurrentDatabase
If Not(db.IsFTIndexed) Then Call db.UpdateFTIndex(True)
Set collection = db.FTSearch(QueryNotes, 0,,FT_FUZZY)	

Call MakeResult(session,db,collection, QueryNotes,QueryUser)	


Exit Sub 
End Sub
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Полнотекстовый поиск.
Замени
If Not(db.IsFTIndexed) Then Call db.UpdateFTIndex(True)
на Call db.UpdateFTIndex(True)
Правда не факт, что индексация завершится мгновенно. Поэтому можно поставить задержку. Т.е.
Код:
Sleep(5)
Call db.UpdateFTIndex(True)
Хотя тоже не факт, то она завершится...
 
I

IrinaK

а как сделать, чтобы форма открывалась не на весь экран, а меньше по размеру? Пробовала через DialogBox, мне пишут, что при выборе поля поиска, необходимо сначала закрыть окно, а как же мне тогда посмотреть результаты?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Извиняюсь за дубль. :ph34r:

а права на апдейт индекса?
Ну это уже не ко мне. ;)

а как сделать, чтобы форма открывалась не на весь экран, а меньше по размеру? Пробовала через DialogBox, мне пишут, что при выборе поля поиска, необходимо сначала закрыть окно, а как же мне тогда посмотреть результаты?
Наверное, Call MakeResult(session,db,collection, QueryNotes,QueryUser) нужно вынести из DialogBox.
 
S

Sandr

а как сделать, чтобы форма открывалась не на весь экран, а меньше по размеру? Пробовала через DialogBox, мне пишут, что при выборе поля поиска, необходимо сначала закрыть окно, а как же мне тогда посмотреть результаты?

А вы что, результат открываете вместо формы поиска? Не новый документ?
 
I

IrinaK

новый. Открывается новая форма с результатами поиска

Теперь при нажатии на кнопку, открывается форма в DialogBox, но при нажатии на самой форме кнопки Поиск, DialogBox закрывается, а форма с результатами не открывается
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Теперь при нажатии на кнопку, открывается форма в DialogBox, но при нажатии на самой форме кнопки Поиск, DialogBox закрывается, а форма с результатами не открывается
После этого?
Call MakeResult(session,db,collection, QueryNotes,QueryUser) нужно вынести из DialogBox.
В принципе можно кнопку поиск вообще убрать.
В диалогбоксе только формировать запрос и записывать его в поле документа (в событии QueryClose с проверкой notesUIDocument.DialogBoxCanceled). А уже после нажатия "Ок" в диалог боксе вызывать это. Только вместо QueryNotes брать поле из документа.
Т.е. что-то типа этого:
Код:
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim collectionSearch As NotesDocumentCollection
Set db = session.CurrentDatabase
Set doc = db.CreateDocument

If ws.DialogBox(..., doc, ...) then
Call db.UpdateFTIndex(True)
Set collection = db.FTSearch(doc.QueryNotes(0), 0,,FT_FUZZY)
Call MakeResult(session,db,collection, QueryNotes,QueryUser)
end if
 
I

IrinaK

так я ведь на кнопке Поиск формирую вид таблицы в форме Результат
 
I

IrinaK

ладно с этим тогда потом разберусь. Не получается. Перестает уже вообще работать. У меня обнаружилась еще одна проблема по всем полям поиск работает, кроме одного пишет : «Notes error: Запрос не распознается (([Form]contains f2)and ((Pos) contains “12”)))»

при этом вформе f2 такое поле есть и свойства у этого поля такие же как и у остальных
 
S

Sandr

f2 - это имя поля, или переменная, которая его хранит?
У вас запрос в кавычках? и кавычки возле ”12”.. возьмите запрос в фигурные скобки {}
И расставте пробелы перед contains и and...
 
Мы в соцсетях:

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