Foxtable(狐表)用户栏目专家坐堂 → [求助]SQL SERVER2000的主键问题


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

主题:[求助]SQL SERVER2000的主键问题

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/11 18:11:00 [显示全部帖子]

 方法一:给这个表设置 唯一约束,这样如果保存了不符合的数据,就会提示报错的。

 方法二:编码控制。

http://www.foxtable.com/help/topics/1994.htm

http://www.foxtable.com/help/topics/2481.htm
[此贴子已经被作者于2013-1-11 18:12:21编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/14 18:12:00 [显示全部帖子]

以下是引用hiliuyong在2013-1-12 17:07:00的发言:

lin

我是通过SQL SERVER设置了唯一约束,

代码如下:

'保存,并捕获错误代码
Dim x2 As Integer = 0
For Each r3 As DataRow In DataTables("收件").dataRows
    Try
        Tables("收件录入_Table1").Current.Save()
        msgbox(1)
    Catch ex As Exception
        Tables("收件录入_Table1").Position = x2  '定位出错行
        r3.SetError("运单编号","数据库中已经导入过该运单编号!")
        MessageBox.Show("存在错误,请处理完错误后重新计算!","提示",MessageBoxButtons.OK)
        Return
    End Try
    x2= x2+1
Next

 

但是程序只是在

    Try
        Tables("收件录入_Table1").Current.Save()
        msgbox(1)
这句循环,而且在msgbox(1)前弹出错误,CATCH并未捕获错误,请教了。


呵呵,不会抛出异常的,所以无法捕捉!暂时只能使用方法二去控制吧。

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/22 11:35:00 [显示全部帖子]

以下是引用hiliuyong在2013-1-21 18:53:00的发言:

这个是实现从远程数据库判断,而且数据量比较大,用代码判断比较简单,但如果导入数据量大的话,效率会异常低下,

我希望可能捕获唯一约束的那个报错,在导入每一条数据的时候,就减少一次通讯。

狐爸有没有办法可以让我捕获这个错误呢。


没有办法哦,如果要追求效率的话,只能是自己编写存储过程了。

---------------------

 狐表目前不支持事务,只能自己通过代码去完成这件事情了。

 比如,多条插入语句写在一个事务里去,然后检测是否有错误,出错的话,就RollBack

Dim cmd As new SQLCommand
cmd.Co nectio nName = "xxx"
cmd.CommandText = "Begin Transaction test; update 订单 set 单价 = 999; Commit Transaction test"
'cmd.CommandText = "Begin Transaction test; update 订单 set 单价 = 999; ROLLBACK Transaction test"

cmd.ExecuteNonQuery

 回到顶部