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


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

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

帅哥哟,离线,有人找我吗?
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原表中却能找到这条记录,但第一列为空值。以上的现象,是不是我的代码

中哪里有缺陷?

以上,谢谢!

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/26 9:21:00 [只看该作者]

 这些代码看不出问题,其它地方影响了,上传一个具体例子加以说明

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/9/26 9:21:00 [只看该作者]

请上例子

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


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

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

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

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


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/9/27 11:37:00 [只看该作者]

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("当前记录还未输入完成,请完成输入")
                Return

            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


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


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

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


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


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

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

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

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


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

还是无效。


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


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

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

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

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

 


 回到顶部
总数 12 1 2 下一页