Foxtable(狐表)用户栏目专家坐堂 → [求助]老师,帮我看看这个新增行后立即被引用_Identify的难题


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

主题:[求助]老师,帮我看看这个新增行后立即被引用_Identify的难题

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]老师,帮我看看这个新增行后立即被引用_Identify的难题  发帖心情 Post By:2020/9/14 16:10:00 [只看该作者]

之前我提过一次问题,就是以下代码:
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编辑过]

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/14 16:16:00 [只看该作者]

我测试没有问题。_dt业务结算这个表格是怎么生成的?

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

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

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By: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,业务结算中新增了一个空行

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/15 9:10:00 [只看该作者]

后台数据库_Identify 显示的还是0?没有设置为自增主键吧

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/9/15 9:49:00 [只看该作者]

没设置过
我又试了以下代码:
Dim dr As DataRow = _dt业务结算.AddNew
dr("数量") = 1
dr.Save
Output.Show( dr("数量"))
这个执行结果是正确的,看来,只有这个_Identify得不到

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/15 9:51:00 [只看该作者]

可能是临时表的原因,换种方式:http://www.foxtable.com/webhelp/topics/3274.htm

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By: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时,我希望就仅仅新增加一个行,不要写入数据,不知这个语句应该如何改

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/15 10:36:00 [只看该作者]

cmd.C ommandText = "Insert Into 每日库存 (入库数量) Values(null);Select SCOPE_IDENTITY()"

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

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/9/15 10:42:00 [只看该作者]

每日库存 (入库数量)   这个入库数量必须要加上吗,或者说必须要写个字段名在挂号内吗?

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


加好友 发短信
等级:超级版主 帖子:110669 积分:563259 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/15 10:52:00 [只看该作者]

随便填一个列名即可

 回到顶部