以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]数据验证 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68186) |
-- 作者:blackzhu -- 发布时间:2015/5/12 8:53:00 -- [求助]数据验证 奇怪怎么发不了贴? 测试下
|
-- 作者:blackzhu -- 发布时间:2015/5/12 8:55:00 -- 我在保存中写了一段代码,代码是在这样写的: Dim cmd As New SQLCommand
Dim dt As DataTable
Dim dr As DataRow = e.DataRow
cmd.C o n n e c ti
cmd.CommandText = "SELECT * F rom {板材未采购数量} Where [板材设计ID] = " & dr("板材ID")
dt = cmd.ExecuteReader
If dt.DataRows.Count > 0 Then
If dr("数量") > dt.DataRows(0)("未采购数量")
If MessageBox.Show("板材ID为 :" & dr("板材ID") & " 现在的输入数量是: " & dr("数量") & " 未采购的数量是: " & dt.DataRows(0)("未采购数量") & "数量超出,是否保存?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information) = DialogResult.No Then
e.Cancel = True
End If
End If
End If
End If
就是说后台相同ID的未采购数量小于要输入的数量时 进行提示.
但现在有一个问题就是该行数据如果保存了 那么该条数据就参与后台的计算了. 万一我再次修改了改行的数据,出来的提示数据就变成了不正确了,这个应该怎么比较好?
我放在BeforeSaveDataRow 事件处理的
|
-- 作者:Bin -- 发布时间:2015/5/12 9:00:00 -- 这样的话,你这表应该作为查询表,使用时随时刷新查询. |
-- 作者:blackzhu -- 发布时间:2015/5/12 9:04:00 -- bin 你的意思这个输入表用查询表做? |
-- 作者:大红袍 -- 发布时间:2015/5/12 9:05:00 -- 条件上排除当前行就行啊
"SELECT * F rom {板材未采购数量} Where [板材设计ID] = " & dr("板材ID") & " And 主键 <> \'" & dr("主键") & "\'" |
-- 作者:blackzhu -- 发布时间:2015/5/12 9:10:00 -- 红袍 怎么可能 我判断的就是ID 要用ID做对比, {板材未采购数量} 是后台的一个无主键视图! |
-- 作者:blackzhu -- 发布时间:2015/5/12 9:21:00 -- 另外一个 我还写了修改状态和新增状态的判断 但是居然新增状态和修改状态会全部判断一次,这是怎么回事? |
-- 作者:blackzhu -- 发布时间:2015/5/12 9:29:00 -- 如果改个事件 是不是好一点? |
-- 作者:Bin -- 发布时间:2015/5/12 9:45:00 -- 你要什么时候都显示最新的,用查询表比较好. |
-- 作者:大红袍 -- 发布时间:2015/5/12 10:07:00 -- 以下是引用blackzhu在2015/5/12 9:21:00的发言:
另外一个 我还写了修改状态和新增状态的判断 但是居然新增状态和修改状态会全部判断一次,这是怎么回事?
有这个判读不就好了?没什么问题啊。 |