以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于主键ID号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121985)

--  作者:yancheng
--  发布时间:2018/7/16 23:41:00
--  关于主键ID号
Dim n1 As Integer = DataTables("材料表").SQLCompute("max(AutoID)")+1
            Dim clb As DataRow = DataTables("材料表").AddNew()
            clb("AutoID") =n1

AutoID是主键,我用上面的代码 增加它的序号时,它不是N1,
如原来排号到:100;我删除 2行,则

autoid = 101
而 N1= 99 
这个怎么解决呢?

--  作者:yancheng
--  发布时间:2018/7/16 23:45:00
--  
完整代码是:
If Tables("材料表").TopPosition > -1 Then \'如果选定区域包括数据行
    Dim dr As Row = Tables("材料选择_table1").Current
    If dr IsNot Nothing Then
        If dr.IsNull("CatePathKey") =False  And  dr.IsNull("工种")=False    And  dr.IsNull("材料名称")=False    And  dr.IsNull("单位")=False    And  dr.IsNull("AutoID")=False   Then
            Dim n1 As Integer = DataTables("材料表").SQLCompute("max(AutoID)")+1   关键像这个:主键:autoid 的值,怎么获取?    
            Dim clb As DataRow = DataTables("材料表").AddNew()
            clb("AutoID") =n1                                              
            clb("CatePathKey") =dr("CatePathKey")
            clb("工种") =dr("工种")
            clb("材料名称") = "[复制]" & dr("材料名称")
            clb("单位") =dr("单位")
            clb("规格") =dr("规格")
            clb("顺序") =dr("顺序")
            clb("材料名称PY") =dr("材料名称PY")
            clb("参考价") =dr("参考价")
            clb("零售价") =dr("零售价")
            clb("批发价") =dr("批发价")
            clb("底限价") =dr("底限价")
            clb("品牌") =dr("品牌")
            clb("创建人") ="超级用户"
            clb("批注") =dr("批注")
            clb("条形码") =dr("条形码")
            clb.save
            \'复制图片
            If MessageBox.show("是否将""" & dr("材料名称")  & """的图片复制到新增的行? ","提示!",MessageBoxButtons.YesNo ) = DialogResult.Yes Then

                Dim strs As List(of DataRow) = DataTables("材料图片表").SQLSelect("mainid = \'" & dr("autoid") & "\'")
                For Each str As DataRow In strs
                    Dim n As Integer = DataTables("材料图片表").SQLCompute("max(AutoID)")+1
                    Dim r As Row = Tables("材料表.材料图片表").AddNew()
                    r("MainID") = n1
                    r("AutoID") = n
                    r("名称") = str("名称") \'写入文件名
                    r("照片Ext") = str("照片Ext") \'写入文件后缀
                    r.Save \'必须先保存
                    Dim fl As String =   str("名称") & str("照片Ext")
                    r.DataRow.SQLInsertFile("照片",fl) \'插入文件
              r.Save \'必须先保存
                Next
                \'  End If
            End If
        Else
            msgbox("要复制的行,材料名称为: """ & dr("材料名称") & """ 的行,,工种/材料名称/单位为空,此行无法导入!")
            
        End If
    Else
        msgbox("""材料表""的当前行为空,不无法复制新增!")
    End If
End If

主表的行增加了。
而 材料图片表,增加的autoid就对应;
[此贴子已经被作者于2018/7/16 23:55:00编辑过]

--  作者:有点甜
--  发布时间:2018/7/17 9:01:00
--  
如果你的主键列是自动递增的话,请先保存,然后再直接读取此行的主键列,即可。