以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]列“ProdID”被约束为是唯一的。值“”已存在。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=72606)

--  作者:kensou11111
--  发布时间:2015/8/2 21:45:00
--  [求助]列“ProdID”被约束为是唯一的。值“”已存在。
最近在给一个朋友做一个软件的外挂程序时,出现了如下错误,数据库为SQL 2005


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150802213546.png
图片点击可在新窗口打开查看

如下为代码
Tables("comProduct").addnew()
Tables("comProduct").current("ProdID") = "DH"

--  作者:有点蓝
--  发布时间:2015/8/2 21:56:00
--  
Dim r As Row
r = 
Tables("
comProduct").AddNew()
dr(
"
ProdID") ="H"
不行就检查表里是否已经存ProdID为空值的行

--  作者:kensou11111
--  发布时间:2015/8/2 22:05:00
--  
ProdID为空值的行删掉后确实不再报这个错,但依然无法通过代码给当前行的ProdID列赋值
--  作者:有点蓝
--  发布时间:2015/8/2 22:07:00
--  
不会吧
[此贴子已经被作者于2015/8/2 22:12:28编辑过]

--  作者:kensou11111
--  发布时间:2015/8/2 22:16:00
--  
试了一下,好像所有列都不能通过代码赋值

我是直接用狐表加载他程序的SQL数据表的,是否其SQL数据库做了某些方面的限制?

--  作者:有点蓝
--  发布时间:2015/8/2 22:31:00
--  
你设置好连接的话没有限制啊
你运行完有没有DataTables.Save()

--  作者:kensou11111
--  发布时间:2015/8/2 22:46:00
--  
DataTables.Save()也是没有用的

反正就是手工输入可以,代码赋值就不行

--  作者:有点蓝
--  发布时间:2015/8/2 22:58:00
--  
后台更新最好用SqlCommand 或者 SqlUpdate吧,带Sql命令的都好使
--  作者:大红袍
--  发布时间:2015/8/3 10:09:00
--  

1、那你数据表,尽量不要用自己的主键,用_Identify,并设置成自增是最好的。

 

2、如果自己设置的主键,必须给主键设置值,才能继续添加数据,一定要注意主键不能重复。代码

 

Dim dt As DataRow = DataTables("comProduct").addnew
dt("ProdID") = "DH"

--  作者:kensou11111
--  发布时间:2015/8/3 16:17:00
--  
以下是引用大红袍在2015/8/3 10:09:00的发言:

1、那你数据表,尽量不要用自己的主键,用_Identify,并设置成自增是最好的。

 

2、如果自己设置的主键,必须给主键设置值,才能继续添加数据,一定要注意主键不能重复。代码

 

Dim dt As DataRow = DataTables("comProduct").addnew
dt("ProdID") = "DH"


上面的代码确实可行,那为何这种情况要用datatables而不能用tables呢?