Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

求指点:一个依据既定编号规则自动编号的问题

冷月无声  发表于:2018-08-15 09:36:34  
复制

点击下载此附件

本人初学Access,正在建设一个供应商库。想法是按供应商类型选择的窗体中选定的一二三级分类,自动生成对应的编号再加上四位流水号作为供应商的唯一代码。请看截图:

其中选择各级分类生成对应的类别编号已经搞定,但流水号一直搞不定。参考了网上一下自动编号的代码如下:

Private Sub 三级分类_AfterUpdate()
    Me.选择的类别 = Me.一级分类 & ">" & Me.二级分类 & ">" & Me.三级分类
    Me.分类代码 = Me.一级分类.Column(1) & "-" & Me.二级分类.Column(1) & "-" & Me.三级分类.Column(1)
    Me.保存.SetFocus
    Dim MaxID As String
    Dim Cod As String
    Dim AC As String
    Cod = Me.分类代码
    If Me.NewRecord = True Then
    MaxID = Nz(DMax("right(供应商代码,4)", "供应商信息", "left(供应商代码,11) = 'cod '"), "")
    End If
      If IsNull(MaxID) Then
      AC = Cod & "0001"
      Else
      AC = Cod & Format(CStr(Val(Right(MaxID, 3) + 1)), "0000")
      Me.供应商代码 = AC
    End If
End Sub


这里是**的:


其实就算这里没错,我也不确定这段代码是否能达成我想要的结果。

请高手不吝赐教啊!多谢!多谢!

 

Top
Tom and Jerry 发表于:2018-08-15 10:15:49

maxid  如果为空  已经被你用nz 换成了空字符串。。。

如果不运行if   也是空字符串啊 

你这个isnull  错的把   起码改成  maxid ="" 


isnull("")   在你的代码中只会 返回 False  所以只会运行 AC = Cod & Format(CStr(Val(Right(MaxID, 3) + 1)), "0000")!!!






冷月无声 发表于:2018-08-15 11:21:24

感谢Tom and Jerry 版主!

您的意思是要把Nz去掉?Nz不是把空字符串换成零值吗?如果不是空字符串应该还保留吧?——我是这么理解的,原来是错的。

后来我把AC = Cod & Format(CStr(Val(Right(MaxID, 3) + 1)), "0000")这句里面的Right()函数去掉,就不报错了。但结果还是没达到自动编号的目的,每次编号都是0001。

我初学小白,望进一步指点。叩谢!



xlb 发表于:2018-08-15 12:25:36
附件发下

冷月无声 发表于:2018-08-15 13:33:08
已上传附件,请帮忙,多谢!

冷月无声 发表于:2018-08-15 15:05:48
按照网上“子编号生成”的代码重新写了这段,居然给解决了

总记录:5篇  页次:1/1 9 1 :