以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何DATATABLE的数据被清除时在录入窗口进行更新  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=60167)

--  作者:gfj72
--  发布时间:2014/11/19 15:06:00
--  [求助]如何DATATABLE的数据被清除时在录入窗口进行更新

专家:

      我在数据表<表A>的datacolchange事件中进行以下判断

当A列的内容发生变化时,如果该记录不符合判定条件时,执行了e.datarow("A列") =  nothing

      我建了一个录入窗口,当中插入了记录窗口控件并绑定到表A,插入了一个table表,绑定到表A,

当我输入数据时,在A列输入的数据错误时,会给出警告,在table表中A列的内容会被清空,但在

记录窗口中列A的数据不会清空,如果想同步实现记录窗口中的列A数据也被清空,同时把焦点落在列A。

如何实现?以上,谢谢!

 

 


--  作者:有点甜
--  发布时间:2014/11/19 15:08:00
--  

 刷新一下记录窗口即可

 

 http://www.foxtable.com/help/topics/2722.htm

 


--  作者:gfj72
--  发布时间:2014/11/20 7:50:00
--  
焦点呢?
--  作者:gfj72
--  发布时间:2014/11/20 8:34:00
--  

上传样版,在窗口中的内径、内毛刺里可以输入数据,当数据超出时,会提示,并清空数据,

这些会反应在table控件中,在recordgrid控件中没有反应,如果我是在内径中输入,如果

按了回车键,一旦有错误提示后,我希望,光标还能回到内径栏中,而不是执行回车到下一

栏中。


--  作者:gfj72
--  发布时间:2014/11/20 8:35:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测量.zip


--  作者:Bin
--  发布时间:2014/11/20 8:46:00
--  
Forms("窗口1").Controls("RecordGrid1").basecontrol.Row=3  这样可以设置记录窗口的选中行
--  作者:gfj72
--  发布时间:2014/11/20 14:39:00
--  

这行代码加在什么位置?如果加在表的DATACOLCHANGE事件中,没有效果啊。

还有前面说的Refresh是用在哪里?我加在DataColchange事件中也没有效果。

 


--  作者:有点甜
--  发布时间:2014/11/20 14:51:00
--  

 去掉之前的代码,在validateEdit加入代码

 

If e.col.name = "内径" Then
    Dim cr As Row = e.Row
    If cr.Isnull("内径")  Then
        Return
    Else
        If val(cr("内径")) > val(3.43) OrElse val(cr("内径")) < val(3.4) Then
            MessageBox.Show("当前数值超出了管理范围,确定要输入?","确认",MessageBoxButtons.OK)
            e.cancel = True
        End If
    End If
End If
If e.Col.name = "内毛刺" Then
    Dim cr As Row = e.Row
    If cr.Isnull("内毛刺")  Then
        Return
    Else
        If val(cr("内毛刺")) > val(0.1) Then
            MessageBox.Show("当前数值超出了管理范围,确定要输入?","确认",MessageBoxButtons.OK)
            e.cancel = True
        End If
    End If
End If
If e.Col.name = "外径A" Then
    Dim cr As Row = e.Row
    If cr.Isnull("外径A")  Then
        Return
    Else
        If val(cr("外径A")) > val(5.95) OrElse val(cr("外径A")) < val(5.9) Then
            MessageBox.Show("当前数值超出了管理范围,请确认?","警告",MessageBoxButtons.OK)
            e.cancel = True
        End If
    End If
End If

If Forms("窗口1").Opened Then
    Forms("窗口1").Controls("RecordGrid1").refresh
End If


--  作者:gfj72
--  发布时间:2014/11/20 15:39:00
--  

如果按当前代码运行,输入的不合适数据是不会被清空的,

如果在e.cancel = ture 前加上 cr("内径") = nothing 的话,

table控件内的数据会被清空,但记录窗口的数据还是不会被清空。

是什么原因呢?


--  作者:gfj72
--  发布时间:2014/11/20 15:51:00
--  

而且这种输入还有一个很大的问题,就是当我输入的数据不满足要求,会跳出提示窗,

但事后如果我无论是清空了数据还是没有清空,如果我去点了另外一个单元格,那错

误的数据还是会自动录入,并且不会有错误提示。这样对于预防错误输入是没有任何

意义的。

[此贴子已经被作者于2014-11-20 15:52:14编辑过]