以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]老师,帮我看看这个新增行后立即被引用_Identify的难题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154413)

--  作者:huangfanzi
--  发布时间:2020/9/14 16:10:00
--  [求助]老师,帮我看看这个新增行后立即被引用_Identify的难题
之前我提过一次问题,就是以下代码:
Dim dr As DataRow = _dt业务结算.AddNew
dr("结算编号") = dr("_Identify")
dr.Save
以上代码无法得到“结算编号”,实际测试,得到的永远是个 0 

你是指导我用以下代码
Dim dr As DataRow = _dt业务结算.AddNew
dr.Save
dr("结算编号") = dr("_Identify")
dr.Save
实际测试,同样得不到“结算编号”
你让我以后不要用 _Identify 作为编号使用,可现在这个项目已经在用了,本来在结算界面,这个_Identify是通过用户在表上新增一行后可以得到的,可现在用户要求根据出入库自动结算,我在出入库表中用了上面的代码在后台结算表中自动生成结算记录,此时,这个编号困扰我二周了,老师看看,有何办法可以让我得到这个新增行的 _Identify
万分感谢!
[此贴子已经被作者于2020/9/14 16:10:32编辑过]

--  作者:有点蓝
--  发布时间:2020/9/14 16:16:00
--  
我测试没有问题。_dt业务结算这个表格是怎么生成的?

到命令窗口执行代码,然后对比看后台数据库的数据

Dim dr As DataRow = _dt业务结算.AddNew
dr.Save
Output.Show( dr("_Identify"))

--  作者:huangfanzi
--  发布时间:2020/9/15 8:29:00
--  
以下是_dt业务结算的生成代码:
项目事件:Initialize
Dim cmd_业务结算 As New SQLCommand
cmd_业务结算.C
cmd_业务结算.C ommandText = "S elect * From {业务结算} Where [_Identify] Is Null"
_dt业务结算 = cmd_业务结算.ExecuteReader(True)

按老师的办法测试了下,显示的还是0,业务结算中新增了一个空行

--  作者:有点蓝
--  发布时间:2020/9/15 9:10:00
--  
后台数据库_Identify 显示的还是0?没有设置为自增主键吧
--  作者:huangfanzi
--  发布时间:2020/9/15 9:49:00
--  
没设置过
我又试了以下代码:
Dim dr As DataRow = _dt业务结算.AddNew
dr("数量") = 1
dr.Save
Output.Show( dr("数量"))
这个执行结果是正确的,看来,只有这个_Identify得不到

--  作者:有点蓝
--  发布时间:2020/9/15 9:51:00
--  
可能是临时表的原因,换种方式:http://www.foxtable.com/webhelp/topics/3274.htm
--  作者:huangfanzi
--  发布时间:2020/9/15 10:32:00
--  
老师,用你这个新思路是可以解决了,虽然有点绕弯子了,现在就一个小问题,以下是我的代码示例:
Dim cmd As new SQLCommand
cmd.C
cmd.C ommandText = "Insert Into 每日库存 (入库数量) Values(?);Select SCOPE_IDENTITY()"
cmd.Parameters.Add("@入库数量",3)
Dim id As Integer = cmd.ExecuteScalar()
Dim dr As DataRow
dr = _dt每日库存.SQLFind("_Identify = " & id)
If dr IsNot Nothing Then \'如果找到的话
    dr("品名") = id
    dr.Save
End If

有一小问题,上面代码执行Insert Into时,我希望就仅仅新增加一个行,不要写入数据,不知这个语句应该如何改

--  作者:有点蓝
--  发布时间:2020/9/15 10:36:00
--  
cmd.C ommandText = "Insert Into 每日库存 (入库数量) Values(null);Select SCOPE_IDENTITY()"

去掉这句:cmd.Parameters.Add("@入库数量",3)

--  作者:huangfanzi
--  发布时间:2020/9/15 10:42:00
--  
每日库存 (入库数量)   这个入库数量必须要加上吗,或者说必须要写个字段名在挂号内吗?
--  作者:有点蓝
--  发布时间:2020/9/15 10:52:00
--  
随便填一个列名即可