35 个解决方案
#1
我觉得查询会不会是lotus的死穴。我们公司现在用的这一个据说是用的lotus自带的查询,只是改了一下srchzhcn.htm的界面,现在有时候能查出来。有时候查不出来。如果查英文的东西 比如我将标题输入了一串十个f那么只有在关键词位置输入十个f时才有可能查出来。多一个不行,少一个可以不行。
我不知道这个查询是怎么执行的。怎么就打开srchzhcn.htm了。而不是别的.htm。另外就只能实现到这个程度了吗,查询太简陋了吧。
你们都是怎么实现的。
听人说可以用一ftsearch等等,这是怎么实现的,我是一个新手,大家能不能说的详细点,
我不知道这个查询是怎么执行的。怎么就打开srchzhcn.htm了。而不是别的.htm。另外就只能实现到这个程度了吗,查询太简陋了吧。
你们都是怎么实现的。
听人说可以用一ftsearch等等,这是怎么实现的,我是一个新手,大家能不能说的详细点,
#2
做一个$$resturn域,计算公式:
DBName:=@ReplaceSubstring(@Subset(@DbName;-1); "\\";"/");
QuotedQuery:=@URLEncode("Domino";Query);
"[/"+DBName+"/" +"Search" + "?SearchView&Query="+QuotedQuery+"&SearchOrder="+@Text(Sort)+@If(MaxResults = ""; ""; "&SearchMax="+@Text(MaxResults))+"&SearchWV="+@If(SearchWV="";"FALSE";"TRUE") + "&SearchFuzzy="+@If(UseSearchFuzzy="";"FALSE";"TRUE") + "&Start=" + @Text(Start) + "&Count=" + @Text(Count) + "]"
其中:Query,SearchOrder等都是域.
你再参考一下帮助文件.
DBName:=@ReplaceSubstring(@Subset(@DbName;-1); "\\";"/");
QuotedQuery:=@URLEncode("Domino";Query);
"[/"+DBName+"/" +"Search" + "?SearchView&Query="+QuotedQuery+"&SearchOrder="+@Text(Sort)+@If(MaxResults = ""; ""; "&SearchMax="+@Text(MaxResults))+"&SearchWV="+@If(SearchWV="";"FALSE";"TRUE") + "&SearchFuzzy="+@If(UseSearchFuzzy="";"FALSE";"TRUE") + "&Start=" + @Text(Start) + "&Count=" + @Text(Count) + "]"
其中:Query,SearchOrder等都是域.
你再参考一下帮助文件.
#3
关注中
#4
第四个Up
结合公式的LotusScript的查询试强大的,至少能满足一般性查询需求。
结合公式的LotusScript的查询试强大的,至少能满足一般性查询需求。
#5
可以用db.ftsearch()或者view.ftsearch()来做,我刚做了一个是用view.ftsearch做的,但是查询结果不准确,有时候查到的结果多,有的时候查的不全。你可以看一下我发的帖子。
http://expert.csdn.net/Expert/topic/2918/2918016.xml?temp=2.987307E-02
那个程序没什么错误,我有的路径和名称改成自己的就行了,
在做搜索表单的时候不要加Query_String_Decoded域
http://expert.csdn.net/Expert/topic/2918/2918016.xml?temp=2.987307E-02
那个程序没什么错误,我有的路径和名称改成自己的就行了,
在做搜索表单的时候不要加Query_String_Decoded域
#6
如何对rtf域的内容进行搜索!
#7
domino中可以精确查找、也可以模糊查找,看看db.search和db.ftsearch
#8
db.search和db.ftsearch都是属于单数据库的查询,多数据库的模糊查询怎么实现呢?
#9
如何进行精确查找?
#10
看lotus的查询哎呀。阿哲的不是也不确定吗,一阵可以查出来,一阵不可以,我现在只想实现对视图的搜索
#11
用ftsearch需要创建索引,有时候索引出现问题就会出现数据不准确的问题,建议单库查询最好用db.search
#12
DOMINO查询大家对它期望不要太高
ftsearch对中英文、中文数字混和的字符支持的不是很好,速度也不敢恭维
ftsearch对中英文、中文数字混和的字符支持的不是很好,速度也不敢恭维
#13
如果用的是Domino 6,建议大家不要用Search或者FTSearch查询,那个速度,曾经让我被批过。
在Domino 6 中,可以用新建视图来代替查询。新建一个满足你给定查询条件的视图,然后把新建的视图打开。给用户看来就是执行了查询。
这样速度提高了很多。我的综合查询就是这么干的。目前来说效果还不错。
在Domino 6 中,可以用新建视图来代替查询。新建一个满足你给定查询条件的视图,然后把新建的视图打开。给用户看来就是执行了查询。
这样速度提高了很多。我的综合查询就是这么干的。目前来说效果还不错。
#14
achan8021,怎么个新建视图来代替查询法呢?具体点啦!
#15
achan8021()
你在b/s中也是这么干的么?效率很高?
你在b/s中也是这么干的么?效率很高?
#16
建个视图来做是不是查询条件都是固定的呀
#17
up
很想知道用视图做查询的细节。
怎么确定查询条件,怎么返回结果?
很想知道用视图做查询的细节。
怎么确定查询条件,怎么返回结果?
#18
searchsite
searchdomain
大家用过么?
searchdomain
大家用过么?
#19
achan8021()
你这样做的话,是怎样处理多用户同时查询的问题呢
你这样做的话,是怎样处理多用户同时查询的问题呢
#20
up
#21
我是用的db.ftsearch速度的确很慢,有时也有选择某个条件查不出来的时候,很想知道原因。
上面说的建立视图作为查询结果那得建多少个啊,一般查询条件都是不固定的。
上面说的建立视图作为查询结果那得建多少个啊,一般查询条件都是不固定的。
#22
如果数据库多或数据量大的话,千万不要给所有的数据库建立全文索引,尤其BS结构的,打开执行实在太慢了.我们单位的一套系统,论坛里建了个全文索引,数据量一大服务器老是报索引的错误.有时处理慢了论坛就进不去了.但是不建全文索引有时查询就查不到.给每人建邮箱时也建立了全文索引.现在邮箱慢死了.
#23
我们现在采取的就是全文索引的方式呀,大家都说是缺点,有没有一个好点的解决方法
#24
前面说的建立视图查询结果,只有在6.x的版本上才能实现,因为只有在6.x的版本上才有相应的这些函数。
1、建立一个基本搜索视图。例如:searchview
2、为此基本搜索视图建立嵌入文档作为查询结果的显示。例如:searchform
3、为查询建立代理。
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim searchView As NotesView
Set db = session.CurrentDatabase
Set searchView = db.getView("searchview")
REM 视图的显示条件
Dim condition As String
Dim viewColumns As Variant
condition = "@LowerCase(form)='formname'"
searchView.SelectionFormula(condition)
viewColumns = searchView.Columns
REM 列的数据:数组0为列标题、数组1为列显示公式
Dim columnName(1,3) As String
columnName(0,0) = "标题1"
columnName(1,0) = "bt1"
columnName(0,1) = "标题2"
columnName(1,1) = "bt2"
columnName(0,2) = "标题3"
columnName(1,2) = "bt3"
columnName(0,3) = "标题4"
columnName(1,3) = "bt4"
REM 原视图列的数量与查询时要显示的列的数量进行比较,少了就往视图上添加列,多了就将多余的列删除
Dim i As Integer
If Ubound(columnName,2) > Ubound(viewColumns) Then
For i = 1 To Ubound(columnName,2) - Ubound(viewColumns)
searchView.CreateColumn
Next
Elseif Ubound(columnName,2) < Ubound(viewColumns) Then
For i = 1 To Ubound(viewColumns) - Ubound(columnName,2)
searchView.RemoveColumn(i)
Next
End If
REM 把视图列的信息放入基本视图当中
Dim viewColumn As NotesViewColumn
viewColumns = Ubound(searchView.Columns)
For i = 1 To Ubound(searchView.Columns)
Set viewColumn = viewColumns(i)
viewColumn.Title = columnName(0,i)
viewColumn.Formula = columnName(1,i)
REM 第一列为排序列
If i = 1 Then viewColumn.IsSorted = True
Next
REM 转到嵌入基本视图的表单进行显示
Print("/" + db.filePath + "/searchform?OpenForm")
End Sub
1、建立一个基本搜索视图。例如:searchview
2、为此基本搜索视图建立嵌入文档作为查询结果的显示。例如:searchform
3、为查询建立代理。
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim searchView As NotesView
Set db = session.CurrentDatabase
Set searchView = db.getView("searchview")
REM 视图的显示条件
Dim condition As String
Dim viewColumns As Variant
condition = "@LowerCase(form)='formname'"
searchView.SelectionFormula(condition)
viewColumns = searchView.Columns
REM 列的数据:数组0为列标题、数组1为列显示公式
Dim columnName(1,3) As String
columnName(0,0) = "标题1"
columnName(1,0) = "bt1"
columnName(0,1) = "标题2"
columnName(1,1) = "bt2"
columnName(0,2) = "标题3"
columnName(1,2) = "bt3"
columnName(0,3) = "标题4"
columnName(1,3) = "bt4"
REM 原视图列的数量与查询时要显示的列的数量进行比较,少了就往视图上添加列,多了就将多余的列删除
Dim i As Integer
If Ubound(columnName,2) > Ubound(viewColumns) Then
For i = 1 To Ubound(columnName,2) - Ubound(viewColumns)
searchView.CreateColumn
Next
Elseif Ubound(columnName,2) < Ubound(viewColumns) Then
For i = 1 To Ubound(viewColumns) - Ubound(columnName,2)
searchView.RemoveColumn(i)
Next
End If
REM 把视图列的信息放入基本视图当中
Dim viewColumn As NotesViewColumn
viewColumns = Ubound(searchView.Columns)
For i = 1 To Ubound(searchView.Columns)
Set viewColumn = viewColumns(i)
viewColumn.Title = columnName(0,i)
viewColumn.Formula = columnName(1,i)
REM 第一列为排序列
If i = 1 Then viewColumn.IsSorted = True
Next
REM 转到嵌入基本视图的表单进行显示
Print("/" + db.filePath + "/searchform?OpenForm")
End Sub
#25
上面的:searchView.SelectionFormula(condition)
应该改为:searchView.SelectionFormula = condition
应该改为:searchView.SelectionFormula = condition
#26
可惜我是5.0.10下次用6.x时用
#27
用视图做查询,在多人一起进行时会不会出现错误,甚至看到别人的搜索结果?
#28
这个也是我要问他的问题,因为实现这种搜索功能不难,但是要适应同时多人搜索就要找方法了。
#29
ding
#30
嗯,我也是刚接触的新手。
一般我都是对视图进行查询,就是把视图里的文档一个一个取出来与要查询条件进行比较。
一般我都是对视图进行查询,就是把视图里的文档一个一个取出来与要查询条件进行比较。
#31
终于有人又记起我这个帖子了,公司准备给项目升级,下一步要完成的是搜索所有数据库中满足条件的文档并列表显示还要有链接,
林帆,你的是不是有点类似对关系型数据库表的查询。
林帆,你的是不是有点类似对关系型数据库表的查询。
#32
to:yuzhejia(阿哲) and michael_law(馬可波羅)
多人一起进行时会不会出现错误,这个问题基本上可以这样回答。
如果用一个视图的话,肯定会出现你们所担心的问题。
要解决这个问题只用动态创建新的视图,使这个视图的名字在整个数据库中保持唯一。
1、做一个视图模板(名字为Template),这个视图没有一列,View Selection 和 Form Formula也是空的。
2、通过程序以Template为模板,创建一个新的视图
Dim Session As New NotesSession
Dim DB As NotesDatabase
Dim View As NotesView
Dim NewView As NotesView
Dim Doc As NotesDocument
Dim NewDoc As NotesDocument
Dim UserName As New NotesName( Session.EffectiveUserName )
//新视图的名字(登录人+当前小时+当前分钟+当前秒,确保该视图唯一)
StrHour = Right("0" + Trim(Str(Hour(Now))),2)
StrMin = Right("0" + Trim(Str(Minute(Now))),2)
StrSec = Right("0" + Trim(Str(Second(Now))),2)
NewViewName = "SEARCHVIEW_" + Ucase(UserName.Common) + "_" + StrHour + StrMin + StrSec
Set DB = Session.CurrentDatabase
Set View = DB.GetView("Template")
Set Doc = DB.GetDocumentByUNID( View.UniversalID )
Set NewDoc = Doc.CopyToDatabase( DB )
Call NewDoc.ReplaceItemValue("$TITLE",NewViewName)
Call NewDoc.Save(True,True)
Set NewView = DB.GetView(NewViewName)
……
……
3、需要做一个定时代理(一个小时一次),将这个小时以前创建的搜索视图全部删除.
多人一起进行时会不会出现错误,这个问题基本上可以这样回答。
如果用一个视图的话,肯定会出现你们所担心的问题。
要解决这个问题只用动态创建新的视图,使这个视图的名字在整个数据库中保持唯一。
1、做一个视图模板(名字为Template),这个视图没有一列,View Selection 和 Form Formula也是空的。
2、通过程序以Template为模板,创建一个新的视图
Dim Session As New NotesSession
Dim DB As NotesDatabase
Dim View As NotesView
Dim NewView As NotesView
Dim Doc As NotesDocument
Dim NewDoc As NotesDocument
Dim UserName As New NotesName( Session.EffectiveUserName )
//新视图的名字(登录人+当前小时+当前分钟+当前秒,确保该视图唯一)
StrHour = Right("0" + Trim(Str(Hour(Now))),2)
StrMin = Right("0" + Trim(Str(Minute(Now))),2)
StrSec = Right("0" + Trim(Str(Second(Now))),2)
NewViewName = "SEARCHVIEW_" + Ucase(UserName.Common) + "_" + StrHour + StrMin + StrSec
Set DB = Session.CurrentDatabase
Set View = DB.GetView("Template")
Set Doc = DB.GetDocumentByUNID( View.UniversalID )
Set NewDoc = Doc.CopyToDatabase( DB )
Call NewDoc.ReplaceItemValue("$TITLE",NewViewName)
Call NewDoc.Save(True,True)
Set NewView = DB.GetView(NewViewName)
……
……
3、需要做一个定时代理(一个小时一次),将这个小时以前创建的搜索视图全部删除.
#33
正在努力学习,继续努力
#34
一般我用DB.search,这样做能满足大部分的要求,但要注意公式中的“=”和“@contain”
所谓“=”就是精确查询了,比如10个f的问题,如果是“@contain”那么就是包含了,比如
10个f,那么可以搜索出包含10个f的,如11个f,但不可能搜索出10个以下的。
缺点就是当数据库中文档非常多时,严重影响查询速度,解决方法就是转储一些文档!
所谓“=”就是精确查询了,比如10个f的问题,如果是“@contain”那么就是包含了,比如
10个f,那么可以搜索出包含10个f的,如11个f,但不可能搜索出10个以下的。
缺点就是当数据库中文档非常多时,严重影响查询速度,解决方法就是转储一些文档!
#35
如果数据量多的话。。db.search和SearchView哪个更快些
#1
我觉得查询会不会是lotus的死穴。我们公司现在用的这一个据说是用的lotus自带的查询,只是改了一下srchzhcn.htm的界面,现在有时候能查出来。有时候查不出来。如果查英文的东西 比如我将标题输入了一串十个f那么只有在关键词位置输入十个f时才有可能查出来。多一个不行,少一个可以不行。
我不知道这个查询是怎么执行的。怎么就打开srchzhcn.htm了。而不是别的.htm。另外就只能实现到这个程度了吗,查询太简陋了吧。
你们都是怎么实现的。
听人说可以用一ftsearch等等,这是怎么实现的,我是一个新手,大家能不能说的详细点,
我不知道这个查询是怎么执行的。怎么就打开srchzhcn.htm了。而不是别的.htm。另外就只能实现到这个程度了吗,查询太简陋了吧。
你们都是怎么实现的。
听人说可以用一ftsearch等等,这是怎么实现的,我是一个新手,大家能不能说的详细点,
#2
做一个$$resturn域,计算公式:
DBName:=@ReplaceSubstring(@Subset(@DbName;-1); "\\";"/");
QuotedQuery:=@URLEncode("Domino";Query);
"[/"+DBName+"/" +"Search" + "?SearchView&Query="+QuotedQuery+"&SearchOrder="+@Text(Sort)+@If(MaxResults = ""; ""; "&SearchMax="+@Text(MaxResults))+"&SearchWV="+@If(SearchWV="";"FALSE";"TRUE") + "&SearchFuzzy="+@If(UseSearchFuzzy="";"FALSE";"TRUE") + "&Start=" + @Text(Start) + "&Count=" + @Text(Count) + "]"
其中:Query,SearchOrder等都是域.
你再参考一下帮助文件.
DBName:=@ReplaceSubstring(@Subset(@DbName;-1); "\\";"/");
QuotedQuery:=@URLEncode("Domino";Query);
"[/"+DBName+"/" +"Search" + "?SearchView&Query="+QuotedQuery+"&SearchOrder="+@Text(Sort)+@If(MaxResults = ""; ""; "&SearchMax="+@Text(MaxResults))+"&SearchWV="+@If(SearchWV="";"FALSE";"TRUE") + "&SearchFuzzy="+@If(UseSearchFuzzy="";"FALSE";"TRUE") + "&Start=" + @Text(Start) + "&Count=" + @Text(Count) + "]"
其中:Query,SearchOrder等都是域.
你再参考一下帮助文件.
#3
关注中
#4
第四个Up
结合公式的LotusScript的查询试强大的,至少能满足一般性查询需求。
结合公式的LotusScript的查询试强大的,至少能满足一般性查询需求。
#5
可以用db.ftsearch()或者view.ftsearch()来做,我刚做了一个是用view.ftsearch做的,但是查询结果不准确,有时候查到的结果多,有的时候查的不全。你可以看一下我发的帖子。
http://expert.csdn.net/Expert/topic/2918/2918016.xml?temp=2.987307E-02
那个程序没什么错误,我有的路径和名称改成自己的就行了,
在做搜索表单的时候不要加Query_String_Decoded域
http://expert.csdn.net/Expert/topic/2918/2918016.xml?temp=2.987307E-02
那个程序没什么错误,我有的路径和名称改成自己的就行了,
在做搜索表单的时候不要加Query_String_Decoded域
#6
如何对rtf域的内容进行搜索!
#7
domino中可以精确查找、也可以模糊查找,看看db.search和db.ftsearch
#8
db.search和db.ftsearch都是属于单数据库的查询,多数据库的模糊查询怎么实现呢?
#9
如何进行精确查找?
#10
看lotus的查询哎呀。阿哲的不是也不确定吗,一阵可以查出来,一阵不可以,我现在只想实现对视图的搜索
#11
用ftsearch需要创建索引,有时候索引出现问题就会出现数据不准确的问题,建议单库查询最好用db.search
#12
DOMINO查询大家对它期望不要太高
ftsearch对中英文、中文数字混和的字符支持的不是很好,速度也不敢恭维
ftsearch对中英文、中文数字混和的字符支持的不是很好,速度也不敢恭维
#13
如果用的是Domino 6,建议大家不要用Search或者FTSearch查询,那个速度,曾经让我被批过。
在Domino 6 中,可以用新建视图来代替查询。新建一个满足你给定查询条件的视图,然后把新建的视图打开。给用户看来就是执行了查询。
这样速度提高了很多。我的综合查询就是这么干的。目前来说效果还不错。
在Domino 6 中,可以用新建视图来代替查询。新建一个满足你给定查询条件的视图,然后把新建的视图打开。给用户看来就是执行了查询。
这样速度提高了很多。我的综合查询就是这么干的。目前来说效果还不错。
#14
achan8021,怎么个新建视图来代替查询法呢?具体点啦!
#15
achan8021()
你在b/s中也是这么干的么?效率很高?
你在b/s中也是这么干的么?效率很高?
#16
建个视图来做是不是查询条件都是固定的呀
#17
up
很想知道用视图做查询的细节。
怎么确定查询条件,怎么返回结果?
很想知道用视图做查询的细节。
怎么确定查询条件,怎么返回结果?
#18
searchsite
searchdomain
大家用过么?
searchdomain
大家用过么?
#19
achan8021()
你这样做的话,是怎样处理多用户同时查询的问题呢
你这样做的话,是怎样处理多用户同时查询的问题呢
#20
up
#21
我是用的db.ftsearch速度的确很慢,有时也有选择某个条件查不出来的时候,很想知道原因。
上面说的建立视图作为查询结果那得建多少个啊,一般查询条件都是不固定的。
上面说的建立视图作为查询结果那得建多少个啊,一般查询条件都是不固定的。
#22
如果数据库多或数据量大的话,千万不要给所有的数据库建立全文索引,尤其BS结构的,打开执行实在太慢了.我们单位的一套系统,论坛里建了个全文索引,数据量一大服务器老是报索引的错误.有时处理慢了论坛就进不去了.但是不建全文索引有时查询就查不到.给每人建邮箱时也建立了全文索引.现在邮箱慢死了.
#23
我们现在采取的就是全文索引的方式呀,大家都说是缺点,有没有一个好点的解决方法
#24
前面说的建立视图查询结果,只有在6.x的版本上才能实现,因为只有在6.x的版本上才有相应的这些函数。
1、建立一个基本搜索视图。例如:searchview
2、为此基本搜索视图建立嵌入文档作为查询结果的显示。例如:searchform
3、为查询建立代理。
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim searchView As NotesView
Set db = session.CurrentDatabase
Set searchView = db.getView("searchview")
REM 视图的显示条件
Dim condition As String
Dim viewColumns As Variant
condition = "@LowerCase(form)='formname'"
searchView.SelectionFormula(condition)
viewColumns = searchView.Columns
REM 列的数据:数组0为列标题、数组1为列显示公式
Dim columnName(1,3) As String
columnName(0,0) = "标题1"
columnName(1,0) = "bt1"
columnName(0,1) = "标题2"
columnName(1,1) = "bt2"
columnName(0,2) = "标题3"
columnName(1,2) = "bt3"
columnName(0,3) = "标题4"
columnName(1,3) = "bt4"
REM 原视图列的数量与查询时要显示的列的数量进行比较,少了就往视图上添加列,多了就将多余的列删除
Dim i As Integer
If Ubound(columnName,2) > Ubound(viewColumns) Then
For i = 1 To Ubound(columnName,2) - Ubound(viewColumns)
searchView.CreateColumn
Next
Elseif Ubound(columnName,2) < Ubound(viewColumns) Then
For i = 1 To Ubound(viewColumns) - Ubound(columnName,2)
searchView.RemoveColumn(i)
Next
End If
REM 把视图列的信息放入基本视图当中
Dim viewColumn As NotesViewColumn
viewColumns = Ubound(searchView.Columns)
For i = 1 To Ubound(searchView.Columns)
Set viewColumn = viewColumns(i)
viewColumn.Title = columnName(0,i)
viewColumn.Formula = columnName(1,i)
REM 第一列为排序列
If i = 1 Then viewColumn.IsSorted = True
Next
REM 转到嵌入基本视图的表单进行显示
Print("/" + db.filePath + "/searchform?OpenForm")
End Sub
1、建立一个基本搜索视图。例如:searchview
2、为此基本搜索视图建立嵌入文档作为查询结果的显示。例如:searchform
3、为查询建立代理。
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim searchView As NotesView
Set db = session.CurrentDatabase
Set searchView = db.getView("searchview")
REM 视图的显示条件
Dim condition As String
Dim viewColumns As Variant
condition = "@LowerCase(form)='formname'"
searchView.SelectionFormula(condition)
viewColumns = searchView.Columns
REM 列的数据:数组0为列标题、数组1为列显示公式
Dim columnName(1,3) As String
columnName(0,0) = "标题1"
columnName(1,0) = "bt1"
columnName(0,1) = "标题2"
columnName(1,1) = "bt2"
columnName(0,2) = "标题3"
columnName(1,2) = "bt3"
columnName(0,3) = "标题4"
columnName(1,3) = "bt4"
REM 原视图列的数量与查询时要显示的列的数量进行比较,少了就往视图上添加列,多了就将多余的列删除
Dim i As Integer
If Ubound(columnName,2) > Ubound(viewColumns) Then
For i = 1 To Ubound(columnName,2) - Ubound(viewColumns)
searchView.CreateColumn
Next
Elseif Ubound(columnName,2) < Ubound(viewColumns) Then
For i = 1 To Ubound(viewColumns) - Ubound(columnName,2)
searchView.RemoveColumn(i)
Next
End If
REM 把视图列的信息放入基本视图当中
Dim viewColumn As NotesViewColumn
viewColumns = Ubound(searchView.Columns)
For i = 1 To Ubound(searchView.Columns)
Set viewColumn = viewColumns(i)
viewColumn.Title = columnName(0,i)
viewColumn.Formula = columnName(1,i)
REM 第一列为排序列
If i = 1 Then viewColumn.IsSorted = True
Next
REM 转到嵌入基本视图的表单进行显示
Print("/" + db.filePath + "/searchform?OpenForm")
End Sub
#25
上面的:searchView.SelectionFormula(condition)
应该改为:searchView.SelectionFormula = condition
应该改为:searchView.SelectionFormula = condition
#26
可惜我是5.0.10下次用6.x时用
#27
用视图做查询,在多人一起进行时会不会出现错误,甚至看到别人的搜索结果?
#28
这个也是我要问他的问题,因为实现这种搜索功能不难,但是要适应同时多人搜索就要找方法了。
#29
ding
#30
嗯,我也是刚接触的新手。
一般我都是对视图进行查询,就是把视图里的文档一个一个取出来与要查询条件进行比较。
一般我都是对视图进行查询,就是把视图里的文档一个一个取出来与要查询条件进行比较。
#31
终于有人又记起我这个帖子了,公司准备给项目升级,下一步要完成的是搜索所有数据库中满足条件的文档并列表显示还要有链接,
林帆,你的是不是有点类似对关系型数据库表的查询。
林帆,你的是不是有点类似对关系型数据库表的查询。
#32
to:yuzhejia(阿哲) and michael_law(馬可波羅)
多人一起进行时会不会出现错误,这个问题基本上可以这样回答。
如果用一个视图的话,肯定会出现你们所担心的问题。
要解决这个问题只用动态创建新的视图,使这个视图的名字在整个数据库中保持唯一。
1、做一个视图模板(名字为Template),这个视图没有一列,View Selection 和 Form Formula也是空的。
2、通过程序以Template为模板,创建一个新的视图
Dim Session As New NotesSession
Dim DB As NotesDatabase
Dim View As NotesView
Dim NewView As NotesView
Dim Doc As NotesDocument
Dim NewDoc As NotesDocument
Dim UserName As New NotesName( Session.EffectiveUserName )
//新视图的名字(登录人+当前小时+当前分钟+当前秒,确保该视图唯一)
StrHour = Right("0" + Trim(Str(Hour(Now))),2)
StrMin = Right("0" + Trim(Str(Minute(Now))),2)
StrSec = Right("0" + Trim(Str(Second(Now))),2)
NewViewName = "SEARCHVIEW_" + Ucase(UserName.Common) + "_" + StrHour + StrMin + StrSec
Set DB = Session.CurrentDatabase
Set View = DB.GetView("Template")
Set Doc = DB.GetDocumentByUNID( View.UniversalID )
Set NewDoc = Doc.CopyToDatabase( DB )
Call NewDoc.ReplaceItemValue("$TITLE",NewViewName)
Call NewDoc.Save(True,True)
Set NewView = DB.GetView(NewViewName)
……
……
3、需要做一个定时代理(一个小时一次),将这个小时以前创建的搜索视图全部删除.
多人一起进行时会不会出现错误,这个问题基本上可以这样回答。
如果用一个视图的话,肯定会出现你们所担心的问题。
要解决这个问题只用动态创建新的视图,使这个视图的名字在整个数据库中保持唯一。
1、做一个视图模板(名字为Template),这个视图没有一列,View Selection 和 Form Formula也是空的。
2、通过程序以Template为模板,创建一个新的视图
Dim Session As New NotesSession
Dim DB As NotesDatabase
Dim View As NotesView
Dim NewView As NotesView
Dim Doc As NotesDocument
Dim NewDoc As NotesDocument
Dim UserName As New NotesName( Session.EffectiveUserName )
//新视图的名字(登录人+当前小时+当前分钟+当前秒,确保该视图唯一)
StrHour = Right("0" + Trim(Str(Hour(Now))),2)
StrMin = Right("0" + Trim(Str(Minute(Now))),2)
StrSec = Right("0" + Trim(Str(Second(Now))),2)
NewViewName = "SEARCHVIEW_" + Ucase(UserName.Common) + "_" + StrHour + StrMin + StrSec
Set DB = Session.CurrentDatabase
Set View = DB.GetView("Template")
Set Doc = DB.GetDocumentByUNID( View.UniversalID )
Set NewDoc = Doc.CopyToDatabase( DB )
Call NewDoc.ReplaceItemValue("$TITLE",NewViewName)
Call NewDoc.Save(True,True)
Set NewView = DB.GetView(NewViewName)
……
……
3、需要做一个定时代理(一个小时一次),将这个小时以前创建的搜索视图全部删除.
#33
正在努力学习,继续努力
#34
一般我用DB.search,这样做能满足大部分的要求,但要注意公式中的“=”和“@contain”
所谓“=”就是精确查询了,比如10个f的问题,如果是“@contain”那么就是包含了,比如
10个f,那么可以搜索出包含10个f的,如11个f,但不可能搜索出10个以下的。
缺点就是当数据库中文档非常多时,严重影响查询速度,解决方法就是转储一些文档!
所谓“=”就是精确查询了,比如10个f的问题,如果是“@contain”那么就是包含了,比如
10个f,那么可以搜索出包含10个f的,如11个f,但不可能搜索出10个以下的。
缺点就是当数据库中文档非常多时,严重影响查询速度,解决方法就是转储一些文档!
#35
如果数据量多的话。。db.search和SearchView哪个更快些