Lotus notes querysave事件验证

Lotus notes querysave事件验证,lotus-notes,Lotus Notes,我有一张表格。表单字段在querysave事件中进行验证。验证过程是这样的。我有一些字段需要在保存期间验证其存在性。i、 例如,当我单击某个复选框,但未在其字段中输入详细信息时,保存时应显示一个错误消息框。新文档的验证工作正常。我的问题是 如何使其同时适用于新文档和编辑模式 当我第二次单击“保存”时,不会显示错误消息。即,当我在消息框中单击“确定”时,不要输入数据,然后单击“保存”,它将被保存。如何在每次单击“保存”时检查验证 请帮帮我。请不要介意我的问题是否简单明了,因为我是新生。提前谢谢 剧

我有一张表格。表单字段在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子例程将退出

    否则

    退出子请添加一些代码。如果不显示代码,就无法猜测代码为何不起作用。能否重新接受正确答案。另外,请不要问重复的问题。请添加一些代码。如果不显示代码,就无法猜测代码为何不起作用。能否重新接受正确答案。另外,请不要问重复的问题。实际上,代码的第一部分,即结算编号的生成只应针对新文档,字段验证应针对新文档和修改的文档。实际上,代码的第一部分,即。,应仅为新单据生成结算编号,并且应为新单据和修改后的单据生成字段验证。