Access交流中心

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

请教:按特定要求自动编码ID问题

夏一秒  发表于:2018-05-22 17:24:50  
复制

我有一个数据库  "客户ID" 其中有ID字段。这个字段编码是按照  4位业务员工号 & 年年月月 & 本月第几个客户数例如001 进行编码的六位文本型数字。
现在我想要这在这个新增记录的窗口打开时,自动生成客户ID号,原定计划是使用 max( [ID]  , "客户ID"  ) 来这个值的。但是不符合实际需求。

请问,我应该如何写代码,能达到对指定 业务员工号年年月月 的ID字段自动求最大值呢?

 我已经测试过  ?"agent" & mid(year(date()),3) & format(month(date()),"00")
输出结果是    agent1805
接下来,就想不明白了


请老师指教


 

Top
leoyoung 发表于:2018-05-22 21:49:22

尝试:Dmax()


建议上传个附件,这样回复会快而准。


Dmax


黎红军 发表于:2018-05-23 19:35:25

两个办法,一个是网站查询,自定义编号,第二是用网站的平台软件,可以设置自定义编码。

下面这些这些供你可以参考。

http://www.accessoft.com/article-show.asp?id=16551

http://www.accessoft.com/article-show.asp?id=5958

http://www.accessoft.com/article-show.asp?id=7351

http://www.accessoft.com/article-show.asp?id=8478

http://www.accessoft.com/article-show.asp?id=10416

。。。。。



SiliconXu 发表于:2018-05-24 09:32:22
用DCount来计算出本月的客户的数量。比如:DCount("ID","客户ID","ID LIKE '*1805*'")。然后新记录的ID就是DCount的结果+1

夏一秒 发表于:2018-06-02 11:24:11

本来是想用Dmax()函数处理的,结果发现Dmax()不支持对查询结果求值。我写成 

strID = DMax("[ID]", "客户ID",Left(ID,8) like me.IDtop)  '系统不认,测试结果为 NULL;注: IDtop 是我根据用户号和日期年月得来的一个字符变量。搞了好久过不去过关,只得更换思路。

我的代码如下:

Private Sub Form_Load()

     Dim strSQL As String
    Dim strID As String
    Dim i As Long

    Me.IDtop = UID & Format(Date, "yy" & "mm")

   strSQL = "SELECT Max(客户ID.ID) AS maxID FROM 客户ID WHERE (((Left([ID],8))=[forms]![addID]![IDtop]))"      '<---这里执行查询,在查询视图中执午结果就是我想要的。但监视窗口,显示 值是True ,类型是 Boolean 一直不明白咋回事。
    
    i = Val(Mid(strSQL, 3)) + 1
    strID = Me.IDtop & Format(i, "000")

 Me.ID = strID
    Me.姓名.SetFocus                
    Me.ID.Enabled = False           
End Sub

得出的结果 me.ID 前缀没问题,但后三位一直是 001。请老师、大神指教!



夏一秒 发表于:2018-06-08 19:30:20
非常感谢麦田老师。问题已经解决!太棒啦!

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