以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  运行错误  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145812)

--  作者:裴保民
--  发布时间:2020/2/8 4:21:00
--  运行错误
Dim d As Date = Date.Today
Dim bh As String = "DH" & Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月.
If  e.DataRow("单号").StartsWith(bh) = False \'如果编号的前6位不符
    Dim max As String
    Dim idx As Integer
    max = e.DataTable.Compute("Max(单号)","单号 like \'" & bh & "%\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该月的最大编号
    If max > "" Then \'如果存在最大编号
        idx = CInt(max.Substring(8,4)) + 1 \'获得最大编号的后三位顺序号,并加1
    Else
        idx = 1 \'否则顺序号等于1
    End If
    e.DataRow("单号") = bh &  Format(idx,"0000")
End If

这段代码放到 DataRowAdded 事件中运行正确




如果放到窗体的AfterLoad 事件中无法保存代码



图片点击可在新窗口打开查看此主题相关图片如下:截图10.jpg
图片点击可在新窗口打开查看



该怎么修改?





[此贴子已经被作者于2020/2/8 4:21:09编辑过]

--  作者:有点蓝
--  发布时间:2020/2/8 9:01:00
--  
先看看:http://www.foxtable.com/webhelp/topics/0604.htm

窗口afterload可用的参数只有一个:http://www.foxtable.com/webhelp/topics/0711.htm

e参数属性:

Form:表示触发事件的窗口


另外没看懂为什么要把生成编号的代码放到afterload?每次打开窗口就上传一个编号?这个编号放到哪里?控件?某个表的某一行?

--  作者:裴保民
--  发布时间:2020/2/8 9:19:00
--  
窗体上有一个标签
我想一打开窗体后,像新增一行一样从表中获取编号(这个时候该表不增加新行)给标签,该怎么写呢?
--  作者:有点蓝
--  发布时间:2020/2/8 9:44:00
--  
dim r as row = tables("某表").current
Dim d As Date = Date.Today
Dim bh As String = "DH" & Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月.
    Dim max As String
    Dim idx As Integer
    max = DataTables("某表").Compute("Max(单号)","单号 like \'" & bh & "%\' " ) \'取得该月的最大编号
    If max > "" Then \'如果存在最大编号
        idx = CInt(max.Substring(8,4)) + 1 \'获得最大编号的后三位顺序号,并加1
    Else
        idx = 1 \'否则顺序号等于1
    End If
    e.form.controls("标签1").text = bh &  Format(idx,"0000")