以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- addnew后怎么获取"_Identify" (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104991) |
-- 作者:luodang2050 -- 发布时间:2017/8/9 19:15:00 -- addnew后怎么获取"_Identify" dim fr as datarow = ft.AddNew fr.save msgbox(fr("_Identify")) 如上,实测获取失败,怎么能够通过代码获取当前新增行的主键值呢?
|
-- 作者:有点甜 -- 发布时间:2017/8/9 19:32:00 -- 我测试没问题,报什么错?
Dim fr As DataRow = DataTables("表A").AddNew |
-- 作者:luodang2050 -- 发布时间: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")) |
-- 作者:有点甜 -- 发布时间:2017/8/9 21:45:00 -- 要这样处理
Dim o As new OuterTableBuilder |
-- 作者:luodang2050 -- 发布时间:2017/8/10 1:01:00 -- 测试获取到的数据都为0 怀疑fr一经保存,其定位将失效,怎么破呢?
[此贴子已经被作者于2017/8/10 9:00:55编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/8/10 9:36:00 -- 4楼测试,没问题。请认真测试。 |
-- 作者:luodang2050 -- 发布时间:2017/8/10 9:52:00 -- 仔细测试过了,内部数据源没问题,但是外部数据源确实获取不到。 |
-- 作者:有点甜 -- 发布时间:2017/8/10 10:21:00 -- 我用access数据库测试没问题
Dim o As new OuterTableBuilder |
-- 作者:有点甜 -- 发布时间:2017/8/10 10:24:00 -- 我用sqlserver数据库测试,也没有问题。 |
-- 作者:luodang2050 -- 发布时间: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编辑过]
|