以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]网络环境下的复杂编号 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133190) |
||||||
-- 作者:myjht -- 发布时间:2019/4/9 12:44:00 -- [求助]网络环境下的复杂编号 远程外部数据库qpmdzhdb,表yxkhzb,字段“客户编号”,“建立日期”,“内容”三个列 很多用户同时使用新增行,同一人可能新增多行没点保存,在保存的时候校验“内容”列是否为空,如果不为空则写入远程外部数据库唯一编号,哪位老师帮我看看代码BeforeSaveDataRow事件 Dim dr As DataRow = e.DataRow Dim pf As String If dr.RowState <> DataRowState.Added Then \'如果不是新增行 Return \'那么返回 ElseIf dr.IsNull("建立日期") Then \'如果没有输入日期 e.Cancel = True \'取消保存此行 MessageBox.Show("必须输入建立日期!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information) Return Else pf = Format(dr("建立日期"),"yyMMdd") \'否则获得编号的前缀,两位年,两位月 End If Dim cmd1 As New SQLCommand Dim cmd2 As New SQLCommand Dim Key As Integer cmd1.C \'设置数据源名称 cmd2.C cmd1.commandText = "Selec t Count(*) Fro m [yxkhzb] Where [客户编号] = \'" & pf & "\'" If cmd1.ExecuteScalar = 0 Then \'如果编号表不存在前缀的行,那么增加一行 cmd1.commandtext = "Inser t Int o yxkhzb (客户编号) Values(\'" & pf & "\',1)" cmd1.ExecuteNonQuery End If cmd1.commandText = "Selec t [顺序号] Fro m [编号] Wher e [前缀] = \'" & pf & "\'" Do Key = cmd1.ExecuteScalar() \'从后台获得顺序号 cmd2.commandText = "Upda te [编号] Se t [顺序号] = " & (Key + 1) & " Wher e [顺序号] = " & Key & " And [前缀] = \'" & pf & "\'" If cmd2.ExecuteNonQuery() > 0 Then \'更新顺序号 Exit Do \'更新成功则退出循环 End If Loop e.DataRow("客户编号") = "KH" & pf & Forma t(Key,"0000")
|
||||||
-- 作者:有点甜 -- 发布时间:2019/4/9 12:55:00 -- 你现在需要这个?
【在保存的时候校验“内容”列是否为空,如果不为空则写入远程外部数据库唯一编号】
你需要判断内容列是不是为空?为空,就提示不保存? |
||||||
-- 作者:myjht -- 发布时间:2019/4/9 13:36:00 -- 是的老师,如果不为空,则生成编号并且保存,如果为空,不允许保存并返回
|
||||||
-- 作者:有点甜 -- 发布时间:2019/4/9 15:56:00 -- 代码我测试没问题,请做一个出错的实例发上来测试。 |
||||||
-- 作者:myjht -- 发布时间:2019/4/9 17:15:00 -- 老师,我表只有这三个列。 远程外部数据库qpmdzhdb,表yxkhzb,字段“客户编号”,“建立日期”,“内容”三个列 很多用户同时使用新增行,同一人可能新增多行没点保存,在保存的时候校验“内容”列是否为空,如果不为空则写入远程外部数据库唯一编号 哪位老师帮我看看代码BeforeSaveDataRow事件
|
||||||
-- 作者:有点甜 -- 发布时间:2019/4/9 19:09:00 -- 请上传出错的实例测试。 |