Foxtable(狐表)用户栏目专家坐堂 → 关于Insert into 执行后,如何同时获得该行的_Identify 值


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

主题:关于Insert into 执行后,如何同时获得该行的_Identify 值

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


加好友 发短信
等级:六尾狐 帖子:1468 积分:11440 威望:0 精华:0 注册:2013/11/24 22:10:00
关于Insert into 执行后,如何同时获得该行的_Identify 值  发帖心情 Post By:2016/9/28 23:37:00 [显示全部帖子]

如题,可以在执行的同时获得_Identify 的值吗?

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


加好友 发短信
等级:六尾狐 帖子:1468 积分:11440 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/8/27 22:27:00 [显示全部帖子]

老师,

如果我想批量插入数量,表中有一个列比如 名称 为: DW ,插入的同时DW的值是:_Identify. 这种SQL的语名要怎么写?

如果只是插入一行可以这样写:

Dim c m d As N
Dim sql As String = "Ins e rt In to 配方信息表 (配方名称) Values('互联网1');up d ate 配方信息表 set DW = @@IDENTITY where _Identify = @@IDENTITY" 
c m d.Co nne ctio nNa me = "h"
cm d.Com mandText = sql
cmd.Ex ecut eN onQuery()

但是两行就会报错。如果同时插入要怎么写呢?


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


加好友 发短信
等级:六尾狐 帖子:1468 积分:11440 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/8/29 11:18:00 [显示全部帖子]

老师

output 应该是好方法,但大foxtable中的SQL要怎么用, 

Dim cmd As New SQLCommand

c m d.Conn e cti
cmd.Co m mand Text = "Ins er t In t o 配方物料表 (物料名称,INCI名称,录入人,DW) Values('A','B','C',output inserted._Identify)" 
c md.Ex ec uteN onQuery()

这样会报错? 编码基础是菜鸟,只会foxtable,但一样也能做个不错的系统,可见foxtable还是很适合菜鸟的!


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


加好友 发短信
等级:六尾狐 帖子:1468 积分:11440 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/8/29 11:43:00 [显示全部帖子]

老师

Dim cmd As New SQLCommand
cmd.ConnectionName = "test"
cmd.CommandText = "Insert Into abc (第一列, 第二列) output inserted._Identify Values('A','B')" 
msgbox(cmd.ExecuteScalar)

第二列中,要直接引用这output inserted._Identify值要怎么写?

cmd.CommandText = "Insert Into abc (第一列, 第二列) output inserted._Identify Values('A',???)" 

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


加好友 发短信
等级:六尾狐 帖子:1468 积分:11440 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/8/29 12:09:00 [显示全部帖子]

老师

这种方法插入一条是没问题问题的,如果是指插入就会报错的,比如

Dim c m d As N
Dim sql As String = "Ins e rt In to 配方信息表 (配方名称) Values('互联网1');up d ate 配方信息表 set DW = @@IDENTITY where _Identify = @@IDENTITY"  & vbcrlf
sql = sql & "UNION ALL" & vbcrlf
sql = sql & "Ins e rt In to 配方信息表 (配方名称) Values('互联网2');up d ate 配方信息表 set DW = @@IDENTITY where _Identify = @@IDENTITY"

c m d.Co nne ctio nNa me = "h"
cm d.Com mandText = sql
cmd.Ex ecut eN onQuery()

这样就会报错的。但是插入操作中,批量的效率又比单条要高好多,想两个都用上

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


加好友 发短信
等级:六尾狐 帖子:1468 积分:11440 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2017/8/30 14:33:00 [显示全部帖子]

再请教下老师

用Union ALL 和 用 Ins e rt In to 配方信息表 (配方名称) Values('互联网1');Ins e rt In to 配方信息表 (配方名称) Values('互联网2')

这两种哪种会好些?

 回到顶部