Foxtable(狐表)用户栏目专家坐堂 → 如何实现的编号?


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

主题:如何实现的编号?

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
如何实现的编号?  发帖心情 Post By:2022/5/30 19:22:00 [显示全部帖子]

如何实现不中断唯一的编号?
新增一个编号回收表,删除的编号就添加到回收表,新增行的时候,查询回收表有编号就使用,然后删除回收表这个编号,如果回收表是空 的就安装常规方式生成新的编号
看上面方法,还是不太理解,
上实例,请老师帮助,谢谢
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:编号问题.zip



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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/6/2 10:00:00 [显示全部帖子]

老师,试一下,有以下问题
1,订单编号,用二种方法,新增,都报错,已存在,新增不了,如图一

图片点击可在新窗口打开查看此主题相关图片如下:编号报错-1.jpg
图片点击可在新窗口打开查看
2,删除,订单表或销售表的空行,回收编号表会产生空编号

图片点击可在新窗口打开查看此主题相关图片如下:编号报错-2.jpg
图片点击可在新窗口打开查看
3.销售编号,新增行,填写日期后,按保存生成编号时,在回收编号找已存编号时,报错如图

图片点击可在新窗口打开查看此主题相关图片如下:编号报销-3.jpg
图片点击可在新窗口打开查看



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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/6/2 10:00:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:编号问题-1.zip


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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/6/6 9:24:00 [显示全部帖子]

Select e.DataCol.Name
    Case "日期"
        If e.DataRow.IsNull("日期") Then
            e.DataRow("编号") = Nothing
        Else
            Dim dr As DataRow = DataTables("回收编号").Find("编号 is not null", "编号")
            If dr IsNot Nothing Then
                e.DataRow("编号") = dr("编号")
                dr.Delete
            Else
                Dim d As Date = e.DataRow("日期")
                Dim y As Integer = d.Year
                Dim m As Integer = d.Month
                Dim Days As Integer = Date.DaysInMonth(y, m)
                Dim fd As Date = New Date(y, m, 1) '获得该月的第一天
                Dim ld As Date = New Date(y, m, Days) '获得该月的最后一天
                Dim bh As String = "KK" & Format(d, "yyyyMM") & "-" '生成编号的前缀
                If e.DataRow("编号").StartsWith(bh) = False Then'如果单据编号前缀不符
                    Dim max As String
                    Dim idx As Integer
                    Dim flt As String
                    flt = "日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [编号] <> '" & e.DataRow("编号") & "'"
                    max = e.DataTable.Compute("Max(编号)", flt) '取得该月的相同工程代码的最大单据编号
                    If max > "" Then '如果存在最大单据编号
                        idx = CInt(max.Substring(max.Length - 4)) + 1 '获得最大单据编号的后四位顺序号,并加1
                    Else
                        idx = 1 '否则顺序号等于1
                    End If
                    e.DataRow("编号") = bh & Format(idx, "0000")
                End If 
            End If 
            
        End If
    Case "编号"
        If e.NewValue Is Nothing AndAlso e.OldValue IsNot Nothing Then 
            
            Dim dr1 As DataRow = DataTables("回收编号").Find("表名 is not null", "表名","编号 Is Not null", "编号")
            
            '            Dim dr As DataRow = DataTables("回收编号").AddNew
            '            Dim dr As DataRow = DataTables("回收编号").AddNew
            dr1 = DataTables("回收编号").AddNew
            
            dr1("编号") = e.OldValue
        End If 
End Select

老师,
问题一:按您建议在。回收编号,增加“表名”记录删除来源表的表名,执行上面代码,红字部分报错,未知编译错误,改了变量,还报错
问题二:从回收编号取旧编号时,没按当前的编号进行,比如回收编号有回收订单编号和销售编号,当销售编号在订单编号前面时,
            新增订单编号时,从回收编号取当前销售编号,不是正确订单编号,
           如何从回收取到当前表的相应的编号?要做新增编号时,做判断是否有相应的旧编号和表名,有的话从回收编号取回,没有新增?
 如何实现,请老师,帮忙。谢谢
问题三:如何实现的编号是唯一不重复,我在测试发现有重复?


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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/6/6 9:56:00 [显示全部帖子]

老师,执行后,报错如下:
由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/6/6 10:11:00 [显示全部帖子]

表名请改为自己正确的表名称。查看过表名是正确。

编号是主键?把表名也作为主键,您 说是把回收编号表的编号是主键,改为表名列做主键?回收编号表是ACCESS在狐表上建立表,没设定主键

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/6/6 11:26:00 [显示全部帖子]

1,可能只用_identify做主键,因为我把表名设定主键报错,
2,表名列设定为主键,要把文本型,改为整数型,只能写数字,这个要做表编号?

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/6/6 11:33:00 [显示全部帖子]

已把回收编号表的_identify做主键,报错
列“编号”被约束为是唯一的。值“KK201005-0004”已存在。

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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/6/6 11:44:00 [显示全部帖子]


老师,我上实例,请您帮助,谢谢
实例在以下问题:
问题一:在测试订单编号时,报错“由于将在索引、 主关键字、或关系中创建重复的值,请求对表的改变没有成功。 改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。”
问题二,回收编号由于新增一列“表名”列后,取值后,删除了编号,并没有删除其行数据,删除不干净,如何解决?
问题三,如何实现不同表能从回收编号表取相应表的的编号,不重复的编号。谢谢
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:编号问题-1 - 副本.zip



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


加好友 发短信
等级:六尾狐 帖子:1257 积分:8555 威望:0 精华:0 注册:2019/6/13 9:57:00
  发帖心情 Post By:2022/6/6 16:24:00 [显示全部帖子]

好的,谢谢老师,这种方法在局域网内多人编辑时,会不会冲突,会取到同一个编号?我刚才单人操作时,可能狐表上操作与外部数据库没同步时,会报错冲突

 回到顶部
总数 11 1 2 下一页