Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口输入保存时部份字段内容未保存


  共有3070人关注过本帖树形打印复制链接

主题:[求助]窗口输入保存时部份字段内容未保存

帅哥哟,离线,有人找我吗?
gfj72
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
[求助]窗口输入保存时部份字段内容未保存  发帖心情 Post By:2014/9/26 9:15:00 [显示全部帖子]

专家:

      我建立了一个输入窗口,向表A中录入数据。在录入窗口设计了一个table表(绑定表A),设计了一个

记录窗口(绑定表A)用来输入记录。在表A中利用代码设置了输入记录时,如果第一列与第二列的内容在历史记录中

有重复的,则提醒用户输入重复记录。并把第一列内容清空。这个在窗口输入时都是正常的。我在窗口中设置了

一个保存按钮,设计了如下代码

If DataTables("表A").HasChanges Then
    If Tables("表A").Rows.Count > 0  Then
        Dim Colnames As String() = {"第一列","第二列","第三列","第四列"}
        Dim Issave As Boolean = True
        For Each ColName As String In Colnames
            If Tables("表A").Current.IsNull(ColName) Then
                Issave = False
                MessageBox.Show("当前记录还未输入完成,请完成输入")
                Exit For
            End If
        Next

........

  If Issave Then
            If MessageBox.show("是否保存当前数据?","提示",MessageBoxButtons.YesNo) = DialogResult.Yes  Then
                For Each r As Row In Tables("表A").Rows
                    r.Locked = True
                Next
                DataTables("表A").Save()
            End If
   End If

End If

 

以上我在窗口操作时,当第一列与第二列输入重复值后,正常现示了重复值提示,并

把第一列的值清除了,在Table表A中也现示第一列的内容为空了,如果这时我按保存

会提示值未输入完,不能保存。我如果在第一列输入不同的值后,Table表A中也会显

示相应的值,这时再按保存,就会完成保存,但table表A中的这条记录值会消失掉

但到表A原表中却能找到这条记录,但第一列为空值。以上的现象,是不是我的代码

中哪里有缺陷?

以上,谢谢!

 


 回到顶部
帅哥哟,离线,有人找我吗?
gfj72
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2014/9/27 11:26:00 [显示全部帖子]

原因找到了,If DataTables("表A").HasChanges Then 这个判断,如果第一次发生有重复数据时

会给出提示,并把错误的数据清空,按保存按钮后,系统不会再从第一句进行判定。而是直接保存了。

但为什么会这样,还不清楚。


 回到顶部
帅哥哟,离线,有人找我吗?
gfj72
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2014/9/27 11:47:00 [显示全部帖子]

把附件上传,加上return也一样无效。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:表a.zip


 回到顶部
帅哥哟,离线,有人找我吗?
gfj72
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2014/9/27 11:51:00 [显示全部帖子]

操作,输入时班别最后再输入,如果这时把班别输入与上一记录一样,就会提示有相同记录,

并把班别数据清空,在table表中可以看到已清空,但在记录窗口中并没有被清空,这时如果

按保存钮,不会有任何的提示,这时如果按关闭,可以在原表中发现记录是以空记录存在的。


 回到顶部
帅哥哟,离线,有人找我吗?
gfj72
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2014/9/27 13:09:00 [显示全部帖子]

还是无效。


 回到顶部
帅哥哟,离线,有人找我吗?
gfj72
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2014/9/27 13:15:00 [显示全部帖子]

我只要把把第一句判断数据表内容是否变更的语句去掉,就没有问题了,但我想不通的,

明明数据表是发生了变化,为什么会不执行后续的程序,因为最后被保存的数据是没有被

锁定的,说明所有程序在提出警告后被中断了。

 


 回到顶部
帅哥哟,离线,有人找我吗?
gfj72
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2014/9/27 13:20:00 [显示全部帖子]

找到原因了,把生产记录表中当发生重复记录后的语句中的e.cancel = true   改成return就可以了。

但为什么这里不能使用e.cancel = true语句呢?

 

[此贴子已经被作者于2014-9-27 13:26:58编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
gfj72
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:59 积分:560 威望:0 精华:0 注册:2013/10/16 18:03:00
  发帖心情 Post By:2014/9/27 13:24:00 [显示全部帖子]

找到原因了,把生产记录表中的datacolchanged事件中判断重复值中的e.cancel = ture 改成return

就可以了。但不知道为什么这里不能使用e.cancel = ture

[此贴子已经被作者于2014-9-27 13:26:39编辑过]

 回到顶部