以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]窗口输入保存时部份字段内容未保存 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=57524) |
||||
-- 作者:gfj72 -- 发布时间:2014/9/26 9:15:00 -- [求助]窗口输入保存时部份字段内容未保存 专家: 我建立了一个输入窗口,向表A中录入数据。在录入窗口设计了一个table表(绑定表A),设计了一个 记录窗口(绑定表A)用来输入记录。在表A中利用代码设置了输入记录时,如果第一列与第二列的内容在历史记录中 有重复的,则提醒用户输入重复记录。并把第一列内容清空。这个在窗口输入时都是正常的。我在窗口中设置了 一个保存按钮,设计了如下代码 If DataTables("表A").HasChanges Then ........ If Issave Then End If
以上我在窗口操作时,当第一列与第二列输入重复值后,正常现示了重复值提示,并 把第一列的值清除了,在Table表A中也现示第一列的内容为空了,如果这时我按保存 会提示值未输入完,不能保存。我如果在第一列输入不同的值后,Table表A中也会显 示相应的值,这时再按保存,就会完成保存,但table表A中的这条记录值会消失掉 但到表A原表中却能找到这条记录,但第一列为空值。以上的现象,是不是我的代码 中哪里有缺陷? 以上,谢谢!
|
||||
-- 作者:有点甜 -- 发布时间:2014/9/26 9:21:00 -- 这些代码看不出问题,其它地方影响了,上传一个具体例子加以说明 |
||||
-- 作者:Bin -- 发布时间:2014/9/26 9:21:00 -- 请上例子 |
||||
-- 作者:gfj72 -- 发布时间:2014/9/27 11:26:00 -- 原因找到了,If DataTables("表A").HasChanges Then 这个判断,如果第一次发生有重复数据时 会给出提示,并把错误的数据清空,按保存按钮后,系统不会再从第一句进行判定。而是直接保存了。 但为什么会这样,还不清楚。 |
||||
-- 作者:lsy -- 发布时间:2014/9/27 11:37:00 -- If DataTables("表A").HasChanges Then End If |
||||
-- 作者:gfj72 -- 发布时间:2014/9/27 11:47:00 -- 把附件上传,加上return也一样无效。
|
||||
-- 作者:gfj72 -- 发布时间:2014/9/27 11:51:00 -- 操作,输入时班别最后再输入,如果这时把班别输入与上一记录一样,就会提示有相同记录, 并把班别数据清空,在table表中可以看到已清空,但在记录窗口中并没有被清空,这时如果 按保存钮,不会有任何的提示,这时如果按关闭,可以在原表中发现记录是以空记录存在的。 |
||||
-- 作者:lsy -- 发布时间:2014/9/27 12:02:00 -- If DataTables("生产记录表").HasChanges Then If Tables("生产记录表").Rows.Count > 0 Then Dim Colnames As String() = {"生产日期","班次","机台号","产品型号","产品批号","原料型号","原料批号"} For Each ColName As String In Colnames If Tables("生产记录表").Current.IsNull(ColName) Then MessageBox.Show("当前记录还未输入完成,请完成输入") Return End If Next Dim dr As Row = Tables("生产记录表").Current Dim STR As String = Tables("生产记录表").Current("产品型号") Dim Intq As Integer = 2 Dim Int As Integer = dr("不良数量") Dim Intsum As Integer = dr("开调机数")+dr("样品数量")+dr("留样样品")+dr("茶色异物")+dr("黑色异物")+dr("气体划伤")+dr("溶合线")+dr("金属异物")+dr("气泡")+dr("油污")+dr("其它") Dim Intm As Integer = dr("机台模数") Dim Intc As Double= (dr("良品数量")+dr("不良数量"))/Intq If Int <> Intsum Then MessageBox.Show("不良数量与相应的不良项目合计不一致,请确认!","警告",MessageBoxButtons.OK) Return Else If Intm <> Intc Then MessageBox.Show("生产模数与良品数和不良数之和不一致,请确认!","警告",MessageBoxButtons.OK) Return End If End If If MessageBox.show("是否保存当前数据?","提示",MessageBoxButtons.YesNo) = DialogResult.Yes Then For Each r As Row In Tables("生产记录表").Rows r.Locked = True Next DataTables("生产记录表").Save() End If End If End If |
||||
-- 作者:gfj72 -- 发布时间:2014/9/27 13:09:00 -- 还是无效。 |
||||
-- 作者:gfj72 -- 发布时间:2014/9/27 13:15:00 -- 我只要把把第一句判断数据表内容是否变更的语句去掉,就没有问题了,但我想不通的, 明明数据表是发生了变化,为什么会不执行后续的程序,因为最后被保存的数据是没有被 锁定的,说明所有程序在提出警告后被中断了。
|