ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

   
高效办公必会的Office实战技巧 永久免费,网表让Excel秒变数据库 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel函数公式学习大典 第2届Power BI可视化大赛,拿超级大奖! 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 打造核心竞争力的职场宝典 13门Excel免费公开课任你学
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 免费的Excel考勤计算系统
查看: 167|回复: 14

[求助] 如何用VB实现合同编号

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-14 14:55 | 显示全部楼层 |阅读模式
1.合同编号为固定,只要ZXXS+日期(20180901)+001
2.当我合同内容都填写完,点击一个按钮确认,就是直接把合同编号确认,另外生成一个新表,新合同编码!
麻烦各位大神了!!!



TEXT1.xlsx.zip

11.68 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2018-9-14 15:01 | 显示全部楼层
本帖最后由 mmx1122 于 2018-9-14 15:05 编辑

'我这个可以实现。可能有点复杂,但是很简单。原理是:每次先去数据库查询最后一个单据编号,如果有就是加1,如果没有,就用新的日期& 0001
我的格式:HL2017080501
Dim Y As String
Dim m As String
Dim D As String
Dim s As String

Sub 新增核料单()

    Y = Year(Date)
    m = Format(Month(Date), "00")
    D = Format(Day(Date), "00")
    s = Y & m & D

    On Error GoTo er
'    cn.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & App.Path & "\Data.mdb" & ";User ID=; Jet OLEDB:database Password = 6318"
   
    With Form1
        sq1 = "SELECT TOP 1 单据编号 FROM 核料表 ORDER BY 单据编号 DESC"
   
        rs1.Open sq1, cn, adOpenKeyset, adLockOptimistic

        If Mid(rs1.Fields("单据编号"), 3, 8) = s Then
            .单据编号 = "HL" & Format(Val(Right(rs1.Fields("单据编号").Value, 10)) + 1, "0000000000")
        Else
            .单据编号 = "HL" & s & "01"
        End If
   
        rs1.Close
        cn.Close
        Set rs1 = Nothing
        Set cn = Nothing
        Exit Sub
er:
        rs1.Close
        cn.Close
        Set rs1 = Nothing
        Set cn = Nothing
        .单据编号 = "HL" & s & "01"
    End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-14 15:10 | 显示全部楼层
mmx1122 发表于 2018-9-14 15:01
'我这个可以实现。可能有点复杂,但是很简单。原理是:每次先去数据库查询最后一个单据编号,如果有就是加1 ...

就是要先多建一个表作为数据查询吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-14 15:12 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-14 15:14 | 显示全部楼层
mmx1122 发表于 2018-9-14 15:01
'我这个可以实现。可能有点复杂,但是很简单。原理是:每次先去数据库查询最后一个单据编号,如果有就是加1 ...

我是新手,不知道怎么弄

TA的精华主题

TA的得分主题

发表于 2018-9-14 15:15 | 显示全部楼层
编号可以这么弄,其他的不懂你的意思
Sub 确认()
With Sheets("销售合同")
If .[d6] = "" Or Val(Mid(.[d6], 5, 8)) <> Format(Date, "yyyymmdd") Then
.[d6] = "ZXXS" & Format(Date, "yyyymmdd") & Format(1, "000")
Else
s = Val(Right(.[d6], 3)) + 1
.[d6] = "ZXXS" & Format(Date, "yyyymmdd") & Format(s, "000")
End If
End With
End Sub

TA的精华主题

TA的得分主题

发表于 2018-9-14 15:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-9-14 15:17 | 显示全部楼层
本帖最后由 simic1989 于 2018-9-14 15:21 编辑

合同编号写在哪?订单号码那边吗?日期你是想要当天的日期?比如这种形式ZXXS20180914001?你点击后想要形成的新表是空表还是你已经填好的合同,但是换个新的合同号?

TA的精华主题

TA的得分主题

发表于 2018-9-14 15:27 | 显示全部楼层
zhaozh2h 发表于 2018-9-14 15:14
我是新手,不知道怎么弄

大家原理都差不多。我说一下我的想法:

假设你之前没有任何数据
9月14日开始做第1张单子,单据编号是 DH201809140001,那么当你做第二张单子时候,你要让系统知道你前面做了几个单子了,单号排到了多少号了,所以你需要去查一下。例如目前只做了1个单子,单号排到了001了,那么现在就要加1,变成0002才对。后面以此类推了。。。。。接下来明天15号再做的时候,日期就变了,你还要让系统去查,查什么呢? 去查单号里有没有和日期20180915一样的,在这里肯定没有啦,所以直接生成单号就是DH201809150001。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-14 15:34 | 显示全部楼层

还有就是,我点击确认之后,会生成新的表,然后确认之前的内容单独保存或者生成新的工作表。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关注官方微信,每天学会一个新技能

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2018-9-25 06:58 , Processed in 0.066461 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

快速回复 返回顶部 返回列表