以文本方式查看主题 - 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=164156) |
-- 作者:hitzfeld -- 发布时间:2021/4/27 22:51:00 -- 取_identify值居然失败了? 是这样的,我要把_identify作为记录的唯一标识,我在明细表增加了一个叫ID的字段,然后在点击“审核”按钮之后,执行下面代码: Tables("采购单").Current("审核") = "已审核" Tables("采购单").Current.Locked = True Tables("采购单").Current.Save() For Each cdr As DataRow In dr.DataRow.GetChildRows("采购明细")
CDR.LOCK CDR.SAVE cdr(“ID”)=Tables("采购明细").Current("_identify") NEXT 然后发现ID值都是1??按照帮助的说法,_identify只有在保存之后才会生效,按道理这时候记录应该已经得到正确的ID值了啊? 然后再改下,重复循环一次吧,代码改成: Tables("采购单").Current("审核") = "已审核" Tables("采购单").Current.Locked = True Tables("采购单").Current.Save() For Each cdr As DataRow In dr.DataRow.GetChildRows("采购明细")
CDR.LOCK CDR.SAVE NEXT For Each cid As DataRow In dr.DataRow.GetChildRows("采购明细")
Dim id As Integer = Tables("采购明细").Current("_identify")
cid("ID")=id
cid.save
msgbox(id) Next 但是ID的值仍然是1???我错在哪里?? |
-- 作者:有点蓝 -- 发布时间:2021/4/27 23:08:00 -- Tables("采购单").Current是指"采购单"表当前选中的行,选一个不同的行,还是1吗? |
-- 作者:hitzfeld -- 发布时间:2021/4/27 23:15:00 -- 蓝老师好,采购单是主表,主表已经有唯一标识了。 需要加ID的是采购明细,明细是子表,ID在子表,我的代码要表达的意思是,建立一个主表后,增加子表记录,然后保存的时候,通过循环,把子表新增的明细记录的_identify的值写入ID字段。
|
-- 作者:有点蓝 -- 发布时间:2021/4/27 23:24:00 -- Tables("采购明细").save For Each cid As DataRow In dr.DataRow.GetChildRows("采购明细") cid("ID")=cid("_identify") Next Tables("采购明细").save
|
-- 作者:hitzfeld -- 发布时间:2021/4/27 23:36:00 -- 搞定!谢谢蓝老师! 但是按照这个代码来说,帮助文档就是错误的了。如果子表执行了.save,这时候的_identify就应该是已经生成了。不应该再执行一次啊?
|
-- 作者:有点蓝 -- 发布时间:2021/4/28 8:37:00 -- 4楼第二次是为了保存ID值,当然如果想以后填入其它数据后再保存,可以去掉第二次的保存语句 |