Lotus notes querysave事件验证
我有一张表格。表单字段在querysave事件中进行验证。验证过程是这样的。我有一些字段需要在保存期间验证其存在性。i、 例如,当我单击某个复选框,但未在其字段中输入详细信息时,保存时应显示一个错误消息框。新文档的验证工作正常。我的问题是Lotus notes querysave事件验证,lotus-notes,Lotus Notes,我有一张表格。表单字段在querysave事件中进行验证。验证过程是这样的。我有一些字段需要在保存期间验证其存在性。i、 例如,当我单击某个复选框,但未在其字段中输入详细信息时,保存时应显示一个错误消息框。新文档的验证工作正常。我的问题是 如何使其同时适用于新文档和编辑模式 当我第二次单击“保存”时,不会显示错误消息。即,当我在消息框中单击“确定”时,不要输入数据,然后单击“保存”,它将被保存。如何在每次单击“保存”时检查验证 请帮帮我。请不要介意我的问题是否简单明了,因为我是新生。提前谢谢 剧
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim w As New notesuiworkspace
Dim uidoc As notesuidocument
Set uidoc = w.CurrentDocument
Dim SESS As New NotesSession
Dim Doc As NotesDocument
Dim RefView As NotesView
Dim DB As NotesDatabase
Dim RefDoc As NotesDocument
Set DB = SESS.CurrentDatabase
Set Doc = uidoc.Document
Set RefView = DB.GetView("System\AutoNo")
If uidoc.IsNewDoc = True Then
Financial_year = Clng(Right$(Cstr(Year(Now)),3)) + 104
If Month(Now) >= 4 Then Financial_year = Financial_year + 1
Application = "ST"
DefKey$ = Cstr(Financial_year)
DefNo& = 0
Set RefDoc = RefView.GetDocumentByKey(DefKey$ , True)
If Not(RefDoc Is Nothing) Then DefNo& = Clng(Right$(RefDoc.SETTLEMENT_NO(0),5))
DefNo& = DefNo& + 1
RefNo$ = (Application + DefKey$) & "-" & Right$("00000" & Cstr(DefNo&) ,5)
Doc.SETTLEMENT_NO= RefNo$
Doc.FinFlag="Finish"
Call SESS.SetEnvironmentVar("ENV_SETT",Right$("00000" & Cstr(DefNo&) ,5))
Call uidoc.Refresh
Else
Exit Sub
End If
get_ex_rate
get_cv_local
set_flag
Dim answer2 As Integer
answer2% = Msgbox("Do you want to save this document?", 1, "Save")
If answer2 = 1 Then
Petro$= uidoc.FieldGetText("Park_Petro_Car")
Vehicle$= uidoc.FieldGetText("Vehicle_No")
Gifts$ = uidoc.FieldGetText("Gifts")
Gifts_Ent$ = uidoc.FieldGetText("Gifts_Ent")
Medical$ = uidoc.FieldGetText("Medical")
Medical_Fee$ = uidoc.FieldGetText("Medical_Fee")
Others$= uidoc.FieldGetText("Others")
OS$= uidoc.FieldGetText("Others_Specify")
Taxi$ = uidoc.FieldGetText("Taxi")
Taxi_Fee$ = uidoc.FieldGetText("Taxi_Fee")
If Petro$ <> "" And Vehicle$ = "" Then
Msgbox "Please enter Vehicle No" , 16, "Vehicle No"
Else
If Gifts$ <> "" And Gifts_Ent$ = "" Then
Msgbox "Please enter Guest/Co.Name" , 16, "Guest/Co.Name"
Else
If Medical$ <> "" And Medical_Fee$ = "" Then
Msgbox "Please enter Medical_Fee" , 16, "Medical_Fee"
Else
If Taxi$ <> "" And Taxi_Fee$ = "" Then
Msgbox "Please enter Taxi Fee" , 16, "Taxi Fee"
Else
If Others$ <> "" And OS$ = "" Then
Msgbox "Please enter Others(Specify)" , 16, "Others (Specify)"
End If
End If
End If
End If
End If
End If
If answer2 = 2 Then
continue=False
Exit Sub
End If
uidoc.Refresh
'uidoc.close
子查询保存(源代码为Notesuidocument,继续为Variant)
Dim w作为新工作区
Dim uidoc作为notesuidocument
设置uidoc=w.CurrentDocument
将SES变暗为新备注SESSION
标注文档作为注释文档
变暗参照视图为注释视图
Dim DB As NotesDatabase
Dim RefDoc As NOTES文档
Set DB=SESS.CurrentDatabase
Set Doc=uidoc.Document
设置RefView=DB.GetView(“系统\自动编号”)
如果uidoc.IsNewDoc=True,则
财政年度=Clng(右$(Cstr(年度(现在)),3))+104
如果月份(现在)>=4,则财政年度=财政年度+1
Application=“ST”
DefKey$=Cstr(财政年度)
DefNo&=0
设置RefDoc=RefView.GetDocumentByKey(DefKey$,True)
如果不是(RefDoc为空),则DefNo&=Clng(右$(RefDoc.结算号(0),5))
DefNo&=DefNo&+1
参考编号$=(应用程序+定义编号$)&“-”和右$(“00000”)和Cstr(定义编号&),5
单据结算编号=参考编号$
Doc.FinFlag=“完成”
调用SESS.SetEnvironmentVar(“ENV_SETT”,Right$(“00000”)和Cstr(DefNo&),5))
调用uidoc.Refresh
其他的
出口接头
如果结束
收取运费
在本地获取您的简历
设置标志
Dim answer2为整数
answer2%=Msgbox(“是否保存此文档?”,1,“保存”)
如果回答2=1,则
Petro$=uidoc.FieldGetText(“停车场”
车辆$=uidoc.FieldGetText(“车辆号”)
礼品$=uidoc.FieldGetText(“礼品”)
礼品$=uidoc.FieldGetText(“礼品”)
Medical$=uidoc.FieldGetText(“Medical”)
医疗费$=uidoc.FieldGetText(“医疗费”)
其他$=uidoc.FieldGetText(“其他”)
OS$=uidoc.FieldGetText(“其他指定”)
出租车$=uidoc.FieldGetText(“出租车”)
出租车费$=uidoc.FieldGetText(“出租车费”)
如果Petro$”和Vehicle$=”,则
Msgbox“请输入车辆编号”,16,“车辆编号”
其他的
如果礼品$''和礼品$='',则
Msgbox“请输入客人/公司名称”,16,“客人/公司名称”
其他的
如果医疗$''和医疗费$='',则
Msgbox“请输入医疗费用”,16,“医疗费用”
其他的
如果出租车$“”和出租车费$=“”那么
Msgbox“请输入出租车费”,16,“出租车费”
其他的
如果其他$“”和OS$=“”则
Msgbox“请输入其他(指定)”,16,“其他(指定)”
如果结束
如果结束
如果结束
如果结束
如果结束
如果结束
如果回答2=2,则
继续=错误
出口接头
如果结束
uidoc.Refresh
“uidoc.close
End Sub感谢您添加代码 使用“
如果uidoc.IsNewDoc=True,那么
”可以明确告诉代码仅在文档为新文档时运行。
因此,要么添加一个适当的elseif分支,要么去掉if本身,并相应地修改验证,使其适用于新的和修改过的文档。感谢您添加代码 使用“
如果uidoc.IsNewDoc=True,那么
”可以明确告诉代码仅在文档为新文档时运行。
因此,要么添加一个适当的elseif分支,要么去掉if本身,并相应地修改验证,使其适用于新文档和修改过的文档。从第一个if语句中删除Else,否则当IsNewDoc返回True时,验证只运行一次,保存文档后,它将返回False,并且QuerySave子例程将退出 否则
Exit Sub从第一个IF语句中删除Else,否则验证只运行一次,当IsNewDoc返回True时,一旦保存文档,它将返回False,并且QuerySave子例程将退出 否则
退出子请添加一些代码。如果不显示代码,就无法猜测代码为何不起作用。能否重新接受正确答案。另外,请不要问重复的问题。请添加一些代码。如果不显示代码,就无法猜测代码为何不起作用。能否重新接受正确答案。另外,请不要问重复的问题。实际上,代码的第一部分,即结算编号的生成只应针对新文档,字段验证应针对新文档和修改的文档。实际上,代码的第一部分,即。,应仅为新单据生成结算编号,并且应为新单据和修改后的单据生成字段验证。