LotusScript 实现将文档统计后,根据厂家名称和文档创建时间计算总分

LotusScript 实现将文档统计后,根据厂家名称和文档创建时间计算总分
创建文档显示如下:
厂家名称           公司得分        时间
厂家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

你可能感兴趣的:(LotusScript 实现将文档统计后,根据厂家名称和文档创建时间计算总分)