Foxtable(狐表)用户栏目专家坐堂 → 关于主键ID号


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

主题:关于主键ID号

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


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
关于主键ID号  发帖心情 Post By:2018/7/16 23:41:00 [只看该作者]

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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/17 9:01:00 [只看该作者]

如果你的主键列是自动递增的话,请先保存,然后再直接读取此行的主键列,即可。

 回到顶部