LotusScript 实现将文档统计后,根据厂家名称和文档创建时间计算总分
创建文档显示如下:
厂家名称 公司得分 时间
厂家A 200 @create
厂家B 300 @create
厂家a 300 @create
显示结果:
厂家名称 公司得分 时间
厂家名称 公司得分 时间
厂家A 200 @create
厂家B 300 @create
厂家a 300 @create
显示结果:
厂家名称 公司得分 时间
厂家A 500 @create
厂家B 200 @create
代码如下:
代码如下:
Sub Initialize
On Error GoTo errorHandle
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim valueCategory As String
Dim nowTime As Variant
Set db = session.CurrentDatabase
Set view = db.GetView("showCategory")
Set doc = view.GetFirstDocument()
If Not doc Is Nothing Then
valueCategory=CStr(doc.sortCategory(0)) ‘从前台获得显示条件
Else
valueCategory="总排行"
End If
While Not(doc Is Nothing)
Call doc.Remove(True)
Set doc = view.GetFirstDocument()
Wend
Call showContent(valueCategory)
Exit Sub
errorHandle:
MsgBox "showFddl error:"+CStr(Erl)+"行"+Error
Exit Sub
End Sub
Function showContent(valueCategory As String)
On Error GoTo eHandle
Dim s As New NotesSession
Dim db As NotesDatabase,view As NotesView
Dim entryc As NotesViewEntryCollection,entryA As NotesViewEntry,entryB As NotesViewEntry
Dim nav As NotesViewNavigator
Dim value As Integer '每个评分
Dim comcount As Integer '一个公司的评分次数
Dim comarr As Variant ,valuearr As Variant '公司和评分数组
Dim entry As NotesViewEntry
Dim com As String
Dim comnew As String
Dim comlast As String
Dim comString As String
Dim valueString As String
Dim count As Integer
Dim doc,doc2,doc3 As NotesDocument
Dim valueb As Integer
Dim oldtime As String
Dim nowTime As String
Dim rview As NotesView
Dim rdoc As NotesDocument
Dim docTime1,docTime2,docTime3 As String '保存的文档时间
'清空视图
Set db=s.Currentdatabase
Set rview= db.GetView("s_showFddl")
Set rdoc = rview.GetFirstDocument()
While Not(rdoc Is Nothing)
Call rdoc.Remove(True)
Set rdoc = rview.getfirstdocument()
Wend
'遍历视图
Set db=s.currentdatabase
Set view = db.getview("showFddl")
Set nav=view.createviewnav() '遍历器
Set entryA=nav.getfirst
comcount=0
If Not entryA Is Nothing Then
com = entryA.Columnvalues(1) '得到公司名称
value =CInt(entryA.Columnvalues(0))
'得到总分
oldtime =entryA.Columnvalues(2) '得到文档的时间
comcount=1
comlast=com
If valueCategory="本周排行" Then '根据条件进行帅选
firstday=Evaluate(|@Weekday(@Date(| & Year(Today) & |;1;1))|)
test=Evaluate(|@Date(|& Year(Today) &|;1;1)|)'第一天(元旦)
days=CInt((today-test(0)))
weeks=CInt(StrLeft(CStr((days+firstday(0)-1)/7),".") )+1
If(weeks>9) Then
thisyearweek=CStr(weeks)
Else
thisyearweek="0"+Cstr(weeks)
End If
nowTime=CStr(Year(Today)&"#"& thisyearweek)
tempOldTime=CDat(Format(oldtime,"yyyy-m-d"))
firstday2=Evaluate(|@Weekday(@Date(| & Year(oldtime) & |;1;1))|)
test2=Evaluate(|@Date(|&Year(oldtime) &|;1;1)|)'第一天(元旦)
days2=CInt(tempOldTime-test2(0))
weeks2=CInt(StrLeft(CStr((days2+firstday2(0)-1)/7),".") )+1
If(weeks2>9) Then
thisyearweek2=CStr(weeks2)
Else
thisyearweek2="0"+Cstr(weeks2)
End If
docTime1=CStr(Year(oldTime))+"#"+CStr(thisyearweek2)
ElseIf valueCategory="本月排行" Then
nowTime=CStr(Year(Now))+"#"+CStr(Month(Now))
docTime1=CStr(Year(oldtime))+"#"+CStr(Month(oldtime))
ElseIf valueCategory="本季度排行" Then
tempNowTime=CStr(Year(Now))+"#"+CStr(Month(Now))
rNowTime=StrRight(tempNowTime,"#")
lNowTime=StrLeft(tempNowTime,"#")
tempDocTime1=CStr(Year(oldtime))+"#"+CStr(Month(oldtime))
RDocTime1=StrRight(tempDocTime1,"#")
lDocTime1=StrLeft(tempDocTime1,"#")
If
lNowTime=lDocTime1 Then
If (0<rNowTime<4) And (0<rDocTime1<4) Then
nowTime="=="
docTime1="=="
End If
If (4<=rNowTime<7) And (4<=rDocTime1<7) Then
nowTime="=="
docTime1="=="
End If
If (7<=rNowTime<10) And (7<=rDocTime1<10) Then
nowTime="=="
docTime1="=="
End If
If (10<=rNowTime<13) And (10<=rDocTime1<13) Then
nowTime="=="
docTime1="=="
End If
Else
nowTime="=="
docTime1="!=="
End If
ElseIf valueCategory="总排行" Then
nowtime=""
docTime1=""
End If
Set entryB = nav.getnext(entryA)
If Not entryB Is Nothing Then
comnew = entryB.Columnvalues(1)
If Not comnew=comlast Then
If(nowtime=docTime1) Then '和当前时间做对比
Set doc = New NotesDocument(db) '保存新文档显示到s_showWhxf视图中
doc.form="pjSumfile"
doc.S_unitName=com
doc.S_no1=value
doc.S_time=Evaluate("@Now")
doc.S_category="电缆防盗器厂家"
Call doc.Save(True,True)
comString=comString+"#:"+com '公司名称字符串
valueString=valueString+"#"+CStr(value) '公司评分字符串
End If
com=""
value=0
comcount=0
comnew=""
End If
Else
If(nowTime=docTime1) Then
Set doc = New NotesDocument(db)
doc.form="pjSumfile"
doc.S_unitName=com
doc.S_no1=value
doc.S_time=Evaluate("@Now")
doc.S_category="电缆防盗器厂家"
Call doc.Save(True,True)
End If
End If
End If
If Not (nowTime=docTime1) Then
value=0 '第一个文档的时间
comcount=0
End If
While Not entryB Is Nothing
com = entryB.Columnvalues(1)
valueNext=entryB.Columnvalues(2)
If valueCategory="本月排行" Then
nowTime=CStr(Year(Now))+"#"+CStr(Month(Now))
docTime2=CStr(Year(valueNext))+"#"+CStr(Month(valueNext))
ElseIf valueCategory="本周排行" Then
firstday=Evaluate(|@Weekday(@Date(| & Year(Today) & |;1;1))|)
test=Evaluate(|@Date(|& Year(Today) &|;1;1)|)'第一天(元旦)
days=CInt((today-CDat(test(0))))
weeks=CInt(StrLeft(CStr((days+firstday(0)-1)/7),".") )+1
If(weeks>9) Then
thisyearweek=CStr(weeks)
Else
thisyearweek="0"+Cstr(weeks)
End If
nowTime=CStr(Year(Today)&"#"& thisyearweek)
tempOldTime2=CDat(Format(valueNext,"yyyy-m-d"))
firstday2=Evaluate(|@Weekday(@Date(| & Year(valueNext) & |;1;1))|)
test2=Evaluate(|@Date(|&Year(valueNext) &|;1;1)|)'第一天(元旦)
days2=CInt(CDat(tempOldTime2)-CDat(test2(0)))
weeks2=CInt(StrLeft(CStr((days2+firstday2(0)-1)/7),".") )+1
If(weeks2>9) Then
thisyearweek2=CStr(weeks2)
Else
thisyearweek2="0"+Cstr(weeks2)
End If
docTime2=CStr(Year(valueNext))+"#"+CStr(thisyearweek2)
ElseIf valueCategory="本季度排行" Then
tempNowTime=CStr(Year(Now))+"#"+CStr(Month(Now))
rNowTime=StrRight(tempNowTime,"#")
lNowTime=StrLeft(tempNowTime,"#")
tempDocTime2=CStr(Year(valueNext))+"#"+CStr(Month(valueNext))
RDocTime2=StrRight(tempDocTime2,"#")
lDocTime2=StrLeft(tempDocTime2,"#")
If
lNowTime=lDocTime2 Then
If (0<rNowTime<4) And (0<rDocTime2<4) Then
nowTime="=="
docTime2="=="
End If
If (4<=rNowTime<7) And (4<=rDocTime2<7) Then
nowTime="=="
docTime2="=="
End If
If (7<=rNowTime<10) And (7<=rDocTime2<10) Then
nowTime="=="
docTime2="=="
End If
If (10<=rNowTime<13) And (10<=rDocTime2<13) Then
nowTime="=="
docTime2="=="
End If
Else
nowTime="=="
docTime2="!=="
End If
ElseIf valueCategory="总排行" Then
nowtime=""
docTime2=""
End If
If( nowTime=docTime2) Then
value=value+entryB.Columnvalues(0) '第二个文档的值
comcount=comcount+1 '有几个相同的值
End If
If(nowTime=docTime3) Then
valueb=valueb+entryB.Columnvalues(0) '最后一个文档的值
End If
comlast=com
Set entryB = nav.getnext(entryB)
If Not entryB Is Nothing Then
comnew = entryB.Columnvalues(1)
If valueCategory="本月排行" Then
nowTime=CStr(Year(Now))+"#"+CStr(Month(Now))
docTime3=CStr(Year(valueNext))+"#"+CStr(Month(valueNext))
ElseIf valueCategory="本周排行" Then
firstday=Evaluate(|@Weekday(@Date(| & Year(Today) & |;1;1))|)
test=Evaluate(|@Date(|& Year(Today) &|;1;1)|)'第一天(元旦)
days=CInt((today-test(0)))
weeks=CInt(StrLeft(CStr((days+firstday(0)-1)/7),".") )+1
If(weeks>9) Then
thisyearweek=CStr(weeks)
Else
thisyearweek="0"+Cstr(weeks)
End If
nowTime=CStr(Year(Today)&"#"& thisyearweek)
tempOldTime=CDat(Format(valueNext,"yyyy-m-d"))
firstday3=Evaluate(|@Weekday(@Date(| & Year(valueNext) & |;1;1))|)
test3=Evaluate(|@Date(|&Year(valueNext) &|;1;1)|)'第一天(元旦)
days3=CInt(tempOldTime-test3(0))
weeks3=CInt(StrLeft(CStr((days3+firstday3(0)-1)/7),".") )+1
If(weeks3>9) Then
thisyearweek3=CStr(weeks3)
Else
thisyearweek3="0"+Cstr(weeks3)
End If
docTime3=CStr(Year(valueNext))+"#"+CStr(thisyearweek3)
ElseIf valueCategory="本季度排行" Then
tempNowTime=CStr(Year(Now))+"#"+CStr(Month(Now))
rNowTime=StrRight(tempNowTime,"#")
lNowTime=StrLeft(tempNowTime,"#")
tempDocTime3=CStr(Year(valueNext))+"#"+CStr(Month(valueNext))
rDocTime3=StrRight(tempDocTime3,"#")
lDocTime3=StrLeft(tempDocTime3,"#")
If
lNowTime=lDocTime3 Then
If (0<rNowTime<4) And (0<rDocTime3<4) Then
nowTime="=="
docTime3="=="
End If
If (4<=rNowTime<7) And (4<=rDocTime3<7) Then
nowTime="=="
docTime3="=="
End If
If (7<=rNowTime<10) And (7<=rDocTime3<10) Then
nowTime="=="
docTime3="=="
End If
If (10<=rNowTime<13) And (10<=rDocTime3<13) Then
nowTime="=="
docTime3="=="
End If
Else
nowTime="=="
docTime3="!=="
End If
ElseIf valueCategory="总排行" Then
nowtime=""
docTime3=""
End If
If Not comnew=comlast Then '公司变了
If(nowTime=docTime2) Then
Set doc2 = New NotesDocument(db)
doc2.form="pjSumfile"
doc2.S_unitName=com
doc2.S_no1=value/comcount
doc2.S_time=Evaluate("@Now")
doc2.S_category="电缆防盗器厂家"
Call doc2.Save(True,True)
comString=comString+"#:"+com
valueString=valueString+"#"+Cstr(value/comcount)
valueb=CInt(entryB.Columnvalues(0))
End If
com=""
value=0
valueb=0
comcount=0
comnew=""
docTime2=""
docTime3=""
End If
Else '最后一个公司
If(nowTime=docTime3) Then
Set doc3 = New NotesDocument(db)
doc3.form="pjSumfile"
doc3.S_unitName=com
doc3.S_no1=valueb/comcount
doc3.S_time=Evaluate("@Now")
doc3.S_category="电缆防盗器厂家"
Call doc3.Save(True,True)
comString=comString+"#:"+com
valueString=valueString+"#"+Cstr(valueb/comcount)
End If
End If
Wend
'comarr=Split(StrRight(comString,"#"),"#")
'valuearr=Split(StrRight(valueString,"#"),"#")
Exit Function
eHandle:
MsgBox "sumFddl showContent错误"+CStr(Erl)+"行"+Error
Exit Function
End Function