Foxtable(狐表)用户栏目专家坐堂 → addnew后怎么获取"_Identify"


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

主题:addnew后怎么获取"_Identify"

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


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
addnew后怎么获取"_Identify"  发帖心情 Post By:2017/8/9 19:15:00 [只看该作者]

dim fr as datarow = ft.AddNew
fr.save
msgbox(fr("_Identify"))

如上,实测获取失败,怎么能够通过代码获取当前新增行的主键值呢?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 19:32:00 [只看该作者]

我测试没问题,报什么错?

 

Dim fr As DataRow = DataTables("表A").AddNew
fr.save
msgbox(fr("_Identify"))


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


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/8/9 19:45:00 [只看该作者]

报错:当传递具有新行的 DataRow 集合时,更新要求有效的 InsertCommand。
测试代码如下:第一个msgbox为0,第二个报错,我的目的是通过sql新增行后,获取对应的主键值,便于关联操作

Dim cmd As new SQLCommand
cmd.ConnectionName = gs_strActiveConn
cmd.CommandText = "sel ect * fro m Test_通用窗口 where 1=2"
Dim dt As DataTable = cmd.ExecuteReader
Dim fr As DataRow = dt.AddNew
msgbox(fr("_Identify"))
fr.Save
msgbox(fr("_Identify"))


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/9 21:45:00 [只看该作者]

要这样处理

 

Dim o As new OuterTableBuilder
o.SelectString = "select * from {表A} where 1=2"
o.tablename = "test"
o.build
Dim dt As DataTable = DataTables("test")
Dim fr As DataRow = dt.AddNew
msgbox(fr("_Identify"))
fr.Save
msgbox(fr("_Identify"))


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


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/8/10 1:01:00 [只看该作者]

测试获取到的数据都为0
怀疑fr一经保存,其定位将失效,怎么破呢?
[此贴子已经被作者于2017/8/10 9:00:55编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/10 9:36:00 [只看该作者]

4楼测试,没问题。请认真测试。

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


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/8/10 9:52:00 [只看该作者]

仔细测试过了,内部数据源没问题,但是外部数据源确实获取不到。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/10 10:21:00 [只看该作者]

我用access数据库测试没问题

 

Dim o As new OuterTableBuilder
o.ConnectionName = "test"
o.SelectString = "select * from {bbb} where 1=2"
o.tablename = "ccc"
o.build
Dim dt As DataTable = DataTables("ccc")
Dim fr As DataRow = dt.AddNew
msgbox(fr("_Identify"))
fr.Save
msgbox(fr("_Identify"))


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/10 10:24:00 [只看该作者]

我用sqlserver数据库测试,也没有问题。

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


加好友 发短信
等级:二尾狐 帖子:585 积分:5674 威望:0 精华:0 注册:2014/5/21 10:30:00
  发帖心情 Post By:2017/8/10 10:58:00 [只看该作者]

我直接贴出我的测试代码吧,实在测试不通过,不知道哪里出问题,两个msgbox都显示0
--mssql2014数据库
Dim o As new OuterTableBuilder
o.ConnectionName = gs_strActiveConn
o.SelectString = "select * fro m {Test_通用窗口} where 1=2"
o.tablename = "ccc"
o.build
Dim dt As DataTable = DataTables("ccc")
Dim fr As DataRow = dt.AddNew
fr("文本") = "1234"
msgbox(fr("_Identify"))
fr.Save
msgbox(fr("_Identify"))

‘---以下表结构
SELECT TOP 1000 [_Locked]
      ,[_SortKey]
      ,[_Identify]
      ,[文本]
      ,[逻辑]
      ,[备注]
      ,[日期]
      ,[整数]
      ,[浮点]
      ,[审计_审核]
      ,[审计_备注]
      ,[审计_请求处理]
      ,[审计_创建者]
      ,[审计_创建时间]
      ,[审计_修改者]
      ,[审计_修改时间]
      ,[审计_修改确认]
  FRO M [IBMD].[dbo].[Test_通用窗口]
[此贴子已经被作者于2017/8/10 10:58:52编辑过]

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