Office中国论坛/Access中国论坛

标题: 【Access小品】屌丝的逆袭---女友租赁合同管理系统示例 [打印本页]

作者: todaynew    时间: 2013-3-20 13:05
标题: 【Access小品】屌丝的逆袭---女友租赁合同管理系统示例
本帖最后由 todaynew 于 2013-3-20 14:50 编辑

  近日,著名大导演冯小刚在微博上针对屌丝的抨击,引发广泛吐槽和愤慨。近年来网络创造了许多新的名词,这些名词的背后代表着许多的黑色幽默。“屌丝”一词据说是指这么一类人:“生活平庸、未来渺茫、感情空虚,不被社会认同。他们也渴望获得社会的高度认可,但又不知道该怎么去做,生活没有目标,缺乏热情,不满于无聊的生活但又不知道该做点什么。”

  在我看来屌丝们还不是无赖者,而是无奈者。于是乎无奈者常常会做出一些无奈的行为,比如逢年过节租女朋友或者男朋友回家应付家长,这应该看成屌丝们的无奈举动。无论如何,屌丝有屌丝的生活,这种生活是一种社会存在,但凡存在都有合理的一面。问题在于能不能对屌丝的生活行为进行一些管理呢?从数据管理的角度来讲,这是可以实现的。

  男屌丝要想租赁一个女屌丝,是需要双方签订一个合同的。合同中有一类叫做定制合同,也就是合同的大部分条款是固定不变的,合同双方只需要对极少部分的条款内容进行约定。这样的合同可以为双方节省编制合同的时间,提高编制的效率。对于大部分屌丝们来说,起草租赁男女朋友的合同并非易事,所有有好事者起草了一份“女友出租合同”,这是一个风趣的定制合同。我们的目标是要对这些合同进行数据管理,怎么来做呢?

  可以这样设计:1、建立一个word文档,作为《租女友合同》的模版,这个模版需要锁定,只留出少数需要填写数据的部分可供编辑。2、设计一个Access数据库管理程序,用于读写word文档,并存放基本数据。具体怎么个搞法,可以下载本实例进行学习。本例中男女屌丝的姓名纯属虚构,如有雷同切勿对号入座。

  本示例展现的是屌丝的逆袭,说明的却是Access与Word的交互过程,在这个过程中有丰富的技巧可供初学者参考。

  示例文件:[attach]51481[/attach]

  word文档锁定操作视图:
[attach]51482[/attach]


      Access操作视图:
[attach]51485[/attach]
 





作者: 轻风    时间: 2013-3-20 14:11
老汉最近正则表达式用得越来越得心应手啊!
代码中没有注释,看得头晕。
作者: zhengjialon    时间: 2013-3-20 14:14
不错,这个东东用得着,当初要做ERP中合同管理模块时没找到,后来合同管理不做了也没研究这个了
作者: miracle-y    时间: 2013-3-20 14:46
这个好 要好好研究一下了
作者: todaynew    时间: 2013-3-20 15:26
本帖最后由 todaynew 于 2013-3-20 16:04 编辑
轻风 发表于 2013-3-20 14:11
老汉最近正则表达式用得越来越得心应手啊!
代码中没有注释,看得头晕。

strmatch = "(^出租方:)(.*)((?:\r\n)+承租方:)(.*)((?:\r\n)+(?:.*|(?:\r\n)+)*$)"
If TestStr(str, strmatch) = True Then
    Restr = "$1" & Me.出租方.Value & "$3" & Me.承租方.Value & "$5"
    str = ReplaceMatch(str, strmatch, Restr)
    Me.合同.Caption = str
End If

以上代码的解释:
一、strmatch存放的是一个正则表达式,这个正则表达式可以写为:
1、(^出租方:)表示文章的开始是“出租方:”,其中^表示字符串的开始位置的通配符。
2、(.*)表示一串各种类型的字符,其中“.”通配任意字符,“*”表示重复0到任意次数。
3、(?:\r\n)+表示一个以上的回车符与换行符,\r为回车符即chr(13),\n为换行符即chr(10),“+”表示至少一次(与“*”类似,只是起始值不同,“*”可以是0次),(?:正则表达式)中的“?:”表示不捕获这个正则表达式变量。
4、(?:.*|(?:\r\n)表示或者是一串连续的字符,或者是回车符与换行符,也就是所有段落(也可以写成"(?:.*\r\n)"一段字符串紧跟着回车换行符)。
5、成对出现的括号中,除了包含?:这样的东西外,都是被捕获到的正则表达式变量,所以这个表达式总共有5个正则表达式变量,它们从左到有依次默认的变量名为$1、$2、$3、$4、$5。

二、Restr中存放的也是一个正则表达式,所不同的是它直接调用strmatch中捕获到的正则表达式变量,并重新拼凑正则表达式。也就是将正则表达式变量$2、$4分别用Me.出租方.Value和Me.承租方.Value替换掉。实际上$2和$4变量标识出的是一个替换位置。所以strmatch也可以采用环视(有的文章叫做零带)的方式来写,这样也可以方便的找到需要替换的位置。

三、ReplaceMatch(str, strmatch, Restr)做正则表达式替换。

四、在后面用了一个strmatch = "(^(?:.*\r\n)*\s+.*租女友时间:)(.*)(至)(.*)(,共计)(\d+)(天,每天基本租金)(\d+)((?:元)(?:.*\r\n)*$)"的正则表达式,大部分的正则表达式元字符在前面都已经解释过了,只有两个需要说明一下:
1、\s+表示多个连续的空格;
2、\d+表示多个连续的数字字符。

五、表示一种匹配结果的正则表达式可以有很多种写法,这与对正则表达式熟悉的程度和个人习惯有关。

六、正则表达式示意图

[attach]51486[/attach]
作者: 左耳fwlb    时间: 2013-3-20 17:39
强,留个记号回头研究。楼主真牛
作者: aleeado    时间: 2013-3-20 18:40
该范例真搞呀
作者: 你是坏蛋    时间: 2013-3-20 19:45
好东西
作者: t小宝    时间: 2013-3-20 22:09
牛{:soso_e179:}
作者: 13601812106_01    时间: 2013-3-21 08:46
特太高了
作者: p51219    时间: 2015-4-11 00:18
好好好好好好好好好
作者: fan0217    时间: 2015-4-13 17:43
其实可以不用正则,就是通过普通替换就可搞定
作者: 倩女有蚊    时间: 2015-5-28 21:00
好赞!!!
作者: 倩女有蚊    时间: 2015-5-28 21:01
什么时候才能到这种境界
作者: nncchh    时间: 2016-1-31 12:24
谢谢分享
作者: nncchh    时间: 2016-1-31 12:28
谢谢分享
作者: changxing    时间: 2016-5-24 21:04
谢谢分享!!支持原创!!
作者: lk-knight    时间: 2017-6-17 23:26
好东西
作者: tuhaibin    时间: 2018-4-4 05:12
不错,学习一下
作者: 十三    时间: 2018-4-11 13:25
真厉害,用的到的时候再来取
作者: gxwzljb    时间: 2019-11-22 15:52
楼主真牛!!又学到东西了。
作者: wangru    时间: 2020-8-2 11:25
学习了,谢谢楼主!





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3