以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]datatable(“***").datarows.addnew不能触发datarowadding事件?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92598)

--  作者:cherryjing
--  发布时间:2016/11/8 8:44:00
--  [求助]datatable(“***").datarows.addnew不能触发datarowadding事件?
在一个窗口按钮的click事件中有如下代码:
Dim db As DataTable = DataTables("专业领域")
Dim dr As DataRow = DataTables("专业领域").Find("所属专业 = \'" & strMajor & "\' And 专业领域 = \'" & strType & "\' And 表名 = \'" & strTableName & "\'")

If dr Is Nothing Then
    dr = DataTables("专业领域").DataRows.AddNew
    dr("所属专业") = strMajor
    dr("专业领域") = strType
    dr("表名") = strTableName
End If


在表“专业领域”的datarowadding事件中仿照帮助有如下代码:
e.DataRow("_Identify") = e.DataTable.Compute("Max(_Identify)") + 1

可是当点击那个窗口按钮时却提示:

“_Identify”列不能为空

请问这是怎么回事?难道datarowadding没有被触发?
[此贴子已经被作者于2016/11/8 8:45:16编辑过]

--  作者:有点色
--  发布时间:2016/11/8 8:50:00
--  

 _Identify的值,是自动递增的,你为什么要赋值?你在数据库设置列的时候,要设置成自动递增

 

http://www.foxtable.com/webhelp/scr/1807.htm

 


--  作者:cherryjing
--  发布时间:2016/11/8 9:05:00
--  
因为是外部数据表
--  作者:cherryjing
--  发布时间:2016/11/8 9:10:00
--  
开始的时候是没有做datarowadding事件,就报这个错,后来想到可能是因为外部表的原因才加了那个事件处理代码,但还是出这个错
--  作者:有点色
--  发布时间:2016/11/8 17:52:00
--  

 你要在你的数据库那里把_Identify设置成自动递增。

 

 如果此列你设置成了非空或主键,只要有一行的数据为空,都会报这个错