以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  integer内容发生变化时要执行事件出现的错误  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=67338)

--  作者:kao_go
--  发布时间:2015/4/22 15:15:00
--  integer内容发生变化时要执行事件出现的错误
我在窗口表中,列的类型是integer
1、选中单元格然后用键盘delete删除内容,不会触发changeEdit事件??
2、输入数字的时候,会提示string类型“”不能传换成integer类型,然后才可以显示数字(好像,修改的时候,内容先变成了空【""】,然后才是我输入的数字)

这个要怎么处理??

--  作者:Bin
--  发布时间:2015/4/22 15:19:00
--  
1.不会触发,因为还未进入编辑
2.不会出现这种情况,应该是你代码有问题,代码发出来或者上个例子看看

--  作者:Bin
--  发布时间:2015/4/22 15:19:00
--  
1.用DataColChangINg 事件会触发
--  作者:kao_go
--  发布时间:2015/4/22 15:24:00
--  回复:(Bin)1.不会触发,因为还未进入编辑2.不会出现...
这是changeEdit中的事件代码
If e.Form.Controls("ckdm").text<>"cpc" Then  \'只有选择成品仓时才执行以下代码
    Return
End If
Dim ckmc As String = e.F+orm.Name
Dim shang1 As Table = Tables(ckmc+"_shang1")
Dim drkhdm As String = shang1.current("khdm")
Dim drdjbh As String = shang1.current("djbh")

Dim dckhdm As String = "cpc"
Dim spdm As String = e.Row("spdm")
Dim ysdm As String = e.Row("gg1dm")
Dim cmdm As String = e.Row("gg2dm")
Dim sl As Integer=e.text

Dim djbh As String=Tables(_fckmc+"_"+_glb).current(_gldm)  \'父窗口单据编号

If Forms(_fckmc).Controls("bianji").text="1" Then
    Tables(_fckmc+"_"+_glb).save  \'如果主表状态是新增,则同时保存主表,做到实时保存,并且重置主表状态为编辑
    Forms(_fckmc).Controls("xiugai").performclick
    \'Forms(_fckmc).Controls("bianji").text="2"
End If

Dim cmd As New SQLCommand
Dim dt As DataTable
Dim dr As DataRow
Dim cmb As WinForm.ComboBox
cmd.C
Dim a1 As String ="SELECT * F+rom bhd1mx"
Dim a2 As String =" where djbh=\'"+djbh+"\' And drdjbh=\'"+drdjbh+"\' And dckhdm=\'"+dckhdm+"\'"
Dim a3 As String =" And spdm=\'"+spdm+"\' and ysdm=\'"+ysdm+"\' and cmdm=\'"+cmdm+"\'"
Dim taba As String =a1+a2+a3
cmd.CommandText = taba
dt = cmd.ExecuteReader(True)
If dt.DataRows.Count=0 Then  \'如果不存在则添加
    dr= dt.AddNew
    dr("djbh")=djbh  \'获取父窗口的单据编号
    dr("spdm")=spdm
    dr("ysdm")=ysdm
    dr("cmdm")=cmdm
    dr("sl")=sl
    dr("drkhdm")=drkhdm
    dr("drdjbh")=drdjbh
    dr("dckhdm")=dckhdm
    dr.save
Else   \'否则更新
    dt.DataRows(0)("sl")=sl
    dt.DataRows(0).save
End If

\'配货数量溢出提示(配货数量)
If e.Row("wwgsl")-e.Row("tzdsl")-e.Row("phsl")<0 Then
MessageBox.Show("配货数量超出未完工数量,请修改!")
End If

--  作者:Bin
--  发布时间:2015/4/22 15:25:00
--  
字符串和数值是不能直接 随意赋值的


--  作者:kao_go
--  发布时间:2015/4/22 15:40:00
--  
 中间确实会转换成“”,才显示数字,用DataColChangINg 事件加上,中间为“”的时候显示0,OK了,就是这样会多计算了一次