Access交流中心

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

求教 如何实现含字母的编码自动递增

胡永炽  发表于:2011-01-07 13:02:14  
复制

在进行编码时,一般的做法是按数字递增。如果单单用数字,复杂的编码比较长,这样不好看也容易输入错误,如果把字母和数字混合编码则精简得多。

例如一个档案表,它有4万多条记录,如果单用数字编码,那么编码长度要5位;用字母数字混合则只要3位。如果编码位数规定的话,字母数字混合的编码递增的幅度会大很多。

说明白就是 单用数字是10进制,字母和数字混合就成36进制了,如:0001到0002......0009、000A、000B......000Z、0010......0099、009A

 

此问题想了两三天了,解决不了,所以求教于Access软件网的高手!

 

Top
煮江品茶 发表于:2011-01-07 13:42:56
请参见《庸人自扰》一文。

胡永炽 发表于:2011-01-07 14:10:41
您好!您的这篇文章,我也看过。问题在于我公司规定某些档案自编码的位数是4啊!

胡永炽 发表于:2011-01-07 14:13:41

您的文章说得很有道理。如果编码规则由我自己规定那当然好办了。



煮江品茶 发表于:2011-01-07 14:30:21

如果是这样,可以这样来处理:编码的前两位用大写英文字母,后两位用阿拉伯数字。整个编码容量在8万1千条左右。

 



煮江品茶 发表于:2011-01-07 15:15:23

 

 

Function 自动编号(str As String) As String
'功能:计算比str增加1位的编号
'规则:1、从AA01开始编号,不超过ZZ99;
'      2、前两位为英文字母大写,后两位为阿拉伯数字
'      3、编码容量为26×26×100-1=67599
Dim str1 As String
Dim str2 As String
If str = "" Then
    str = "AA00"
End If
str1 = Format((Right(str, 2) + 1) Mod 100, "00")
str2 = Left(str, 2)
If str1 = "00" Then
    If Right(str2, 1) <> "Z" Then
        str2 = Left(str2, 1) & Chr(Asc(Right(str2, 1)) + 1)
    Else
        If Left(str2, 1) <> "Z" Then
            str2 = Chr(Asc(Left(str2, 1)) + 1) & "A"
        Else
            MsgBox "编号超范围!"
            自动编号 = ""
            Exit Function
        End If
    End If
End If
自动编号 = str2 & str1
End Function



煮江品茶 发表于:2011-01-07 16:00:14

如果觉得预留的容量不足的话,可以前三位用大写英文字母,后一位用阿拉伯数字,这样的话容量可以提高到175759,应该足以解决问题了。

 



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