Foxtable(狐表)用户栏目专家坐堂 → [求助]列“ProdID”被约束为是唯一的。值“”已存在。


  共有4196人关注过本帖树形打印复制链接

主题:[求助]列“ProdID”被约束为是唯一的。值“”已存在。

帅哥哟,离线,有人找我吗?
kensou11111
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
[求助]列“ProdID”被约束为是唯一的。值“”已存在。  发帖心情 Post By:2015/8/2 21:45:00 [只看该作者]

最近在给一个朋友做一个软件的外挂程序时,出现了如下错误,数据库为SQL 2005


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2015/8/2 21:56:00 [只看该作者]

Dim r As Row
r = 
Tables("
comProduct").AddNew()
dr(
"
ProdID") ="H"
不行就检查表里是否已经存ProdID为空值的行

 回到顶部
帅哥哟,离线,有人找我吗?
kensou11111
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2015/8/2 22:05:00 [只看该作者]

ProdID为空值的行删掉后确实不再报这个错,但依然无法通过代码给当前行的ProdID列赋值

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2015/8/2 22:07:00 [只看该作者]

不会吧
[此贴子已经被作者于2015/8/2 22:12:28编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
kensou11111
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2015/8/2 22:16:00 [只看该作者]

试了一下,好像所有列都不能通过代码赋值

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2015/8/2 22:31:00 [只看该作者]

你设置好连接的话没有限制啊
你运行完有没有DataTables.Save()

 回到顶部
帅哥哟,离线,有人找我吗?
kensou11111
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By:2015/8/2 22:46:00 [只看该作者]

DataTables.Save()也是没有用的

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2015/8/2 22:58:00 [只看该作者]

后台更新最好用SqlCommand 或者 SqlUpdate吧,带Sql命令的都好使

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/3 10:09:00 [只看该作者]

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

 

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

 

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

 回到顶部
帅哥哟,离线,有人找我吗?
kensou11111
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:255 积分:2359 威望:0 精华:0 注册:2011/4/25 9:23:00
  发帖心情 Post By: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呢?


 回到顶部
总数 11 1 2 下一页