以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  空值报错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=37781)

--  作者:longtechwj
--  发布时间:2013/7/11 13:33:00
--  空值报错

用TABLE的FILL填充数据,因查出该表数据为空,调用AddNew()方法的时候出现空值异常


图片点击可在新窗口打开查看此主题相关图片如下:nullexception.jpg
图片点击可在新窗口打开查看


--  作者:狐狸爸爸
--  发布时间:2013/7/11 13:42:00
--  

贴出这个按钮的代码。

 


--  作者:longtechwj
--  发布时间:2013/7/11 13:44:00
--  

If(Cstr(e.Form.Controls("CFA01").Value)="") Then
MessageBox.Show("请先保存主档信息!","提示",MessageBoxButtons.Ok,MessageBoxIcon.Information)
Return
End If

If(Tables("产品出货_Table2").Rows.Count>0) Then
Dim t As Table = Tables("产品出货_Table2")
Dim g As Subtotalgroup
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
t.SubtotalGroups.Clear()
t.Subtotal()
End If

Dim r1 As DataRow
r1=Tables("产品出货_Table2").DataTable.AddNew()
r1("CFB01")=e.Form.Controls("CFA01").Value
Tables("产品出货_Table2").Cols("CFB03").DropForm = "订单资料导入"


--  作者:longtechwj
--  发布时间:2013/7/11 13:44:00
--  
r1("CFB01")=e.Form.Controls("CFA01").Value 这一句报错

--  作者:狐狸爸爸
--  发布时间:2013/7/11 13:47:00
--  

你说的这个,按道理不会出错的。

 

你把下面这样:

 

If Cstr(e.Form.Controls("CFA01").Value)="")

 

改为:

 

if e.Form.Controls("CFA01").Value Is Nothing Then

 

 

如果还有问题,做个例子发上来。


--  作者:longtechwj
--  发布时间:2013/7/11 18:18:00
--  

这个是我绑定数据的代码

sql="select CFB01,CFB31,CFB03,CFB04,CFB05,CFB06,CFB07,CFB08,CFB09,CFB10,CFB11,CFB12,CFB13,CFB14,CFB15,CFB16,CFB17 FROM CPCFB where CFB01=\'"+Tables("产品出货_Table1").Current("CFA01")+"\'"
Tables("产品出货_Table2").fill(sql,"EPN数据",False)

Tables("产品出货_Table2").Cols("CFB03").DropForm = "订单资料导入"

 

然后这个是我新增记录行的代码

If e.Form.Controls("CFA01").Value Is Nothing Then
MessageBox.Show("请先保存主档信息!","提示",MessageBoxButtons.Ok,MessageBoxIcon.Information)
Return
End If

If(Tables("产品出货_Table2").Rows.Count>0) Then
Dim t As Table = Tables("产品出货_Table2")
Dim g As Subtotalgroup
g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
t.SubtotalGroups.Clear()
t.Subtotal()
End If

Dim r1 As DataRow
r1=Tables("产品出货_Table2").DataTable.AddNew()
r1("CFB01")=e.Form.Controls("CFA01").Value
Tables("产品出货_Table2").Cols("CFB03").DropForm = "订单资料导入"


--  作者:longtechwj
--  发布时间:2013/7/11 18:26:00
--  
Dim r1 As DataRow
With Tables("产品出货_Table2")
    If .Current Is Nothing OrElse .Current.DataRow.RowState = DataRowState.Unchanged Then
        .AddNew()
        r1=.Current.DataRow
        r1("CFB01")=e.Form.Controls("CFA01").Value
    Else
        MessageBox.Show("该记录已经被修改,若想保存结果请先<保存修改>,否则请<撤销修改>! ")
    End If
End With
这样就不会报错,但是用下拉窗体导入不进去数据
--  作者:Bin
--  发布时间:2013/7/12 8:51:00
--  
你上个例子吧,方便分析问题.