ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: lhm0926

[原创] VBA+ACCESS进销存系统设计思路及VBA源码分享

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-20 21:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lhm0926 于 2021-1-20 21:59 编辑

辅助资料是没有属性的,仅由代码名称构成,再加一个备注字段。


构造两个工作表,一个用于操作,执行查询、增加、修改、删除等操作,另一个用于存放数据。放在两个表的理由是防止用户用于误操作导致数据发生错误。


存放数据的表:

在第1行放字段名称,有ID, ClassID, 代码,名称,备注五个字段

这里要注意,由于IDClassID是数值型字段,所以工作表的A列和B列设置格式为数值,小数位为0.


如下图:

11.png


ClassID:为0的记录是分类,如性别,客户类型等,不为0的小类,其值为大类的ID

如第5行的ClassID1,在ID列查找1的记录是性别,即男是性别大类下面的小类。


创建一个MaxID表,存放整个数据库的最大ID,控制ID不能重复;

如下图:

22.png

三个字段,关键字ItemAid是辅助资料表,Item是基础资料,单据是Bill

每次新增记录时,从这个表中取当前的最大记录,保存数据后再更新最大的ID



辅助资料管理:

如图:

33.png


放置一个combobox控件,用于显示辅助资料大类。

四个按钮:刷新,保存,删除,返回主控台。系统内所有的删除动作一定要最后做,因为删除会涉及到其他表的关联问题,考虑不周全会导致错误删除。

特殊列说明:
A列:当表格数据发生变动时,记录为1,目的是保存时,只保存A列为1的行,提高速度;
B列:检查代码和名称是否重复,用countif公式来检查,大于1的就是重复了;
C列:存放记录的ID,如果ID列有内容,是修改记录,为空则是新增记录;
从第4行向下,D列向右,都是可以编辑的。

操作方法是手工录入,或者其他表格有现成资料,直接复制过来就可以了

进销存系统设计.rar (114.81 KB, 下载次数: 252)



评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-21 16:40 | 显示全部楼层
明天继续更新基础资料的做法。

TA的精华主题

TA的得分主题

发表于 2021-1-22 08:47 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-22 14:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
基础资料设计

基础资料的结构不是固定不变的,会随着业务的变化而变化,为了能让系统有一定的弹性,我们先定义一个基础资料结构。目的是当需要增加新的字段时不用手工去表中填加,所有的资料表查询,新增,修改也不需要去改动。


增加一个工作表,命名为【基础资料结构】。
在工作表中增加如下内容:
11.png

【类别】:相当于内码,也可以不用,直接用B列内容内容来调用,我的习惯是用数字来代表,如类别1代表部门,类别3代表客户等,写代码的时候好写。
【名称】:资料的标题
【类型】:是文本还是日期或者数字,便于在检查数据时保证数据正确,比如如果是数字类型的字段,我们可以通过excel的数据有效性来限制录入的内容。
【长度】:可以控制显示的小数位。
【来源】:标明该字段是手工录入还是通过其他资料进行选择。
【来源类别】:如果可以通过其他来源录入,具体的类别。
【排序】:通过这个字段的改变,可以改变资料查询界面各字段的前后顺序。
【必录】:数据在保存时,必录为Y的的资料必须有内容,没有内容是不允许保存的,从而保证数据的完整性。


数据结构表建好以后,通过一段代码可以自动新建资料表,以及后续的更新字段的工作;
这里需要说明的是SQL操作excel表时是以单元格类型最多的判断其字段类型,所以需要在数据表中新增第1ID0的记录,以帮助其判断字段类型。在查询时都是增加ID>0的判断。


上述新建的工作表是为了保存数据而建的,用户是接触不到的,所有数据的录入,查询,删除都是在另一个界面进行操作,从而保证数据完整。


我们再新建一个工作表【基础资料】,这张表可以对所有的基础资料进行新增,保存,删除等操作。而且对界面的设计要友好,方便用户操作。
先设计表格式格式:
设计表格时可以先自动手动设计格式,满意后再后代码进行设计,这样做的目的是每次打开表时都会自动重绘,不必担心格式被破坏。
所有数据的读取,更新,删除都使用SQL语句来操作,这样不必去考虑某个字段在哪列的问题,并且存取数据快。


使用ADO操作SQL的方法:


  • VBA编辑器菜单【工具】à【引用】
    22.png
    选择ActiveX Data Objects 可能会有很多版本,选择版本高的打勾。也可以用CreateObject,
    引用的好处是可以自动提示代码。
  • 工作薄中新建模块,命名为mod_Variable。命名是为了方便自己操作,也可以不更名,使用默认的名称。增加两个过程:
  • 打开数据库操作:
    DBOpen
    关闭数据库操作:
    DBClose
  • 在主控台增加6个按钮,分别对应6种基础资料;
  • 在点击每个按钮时我们需要传递一个参数,即我们要显示的是哪个类别的基础资料



可以通过写注册表来传递
如:SaveSetting"Wolf", "Item", "ClassID", 1
在基础资料表激活时先读取这个项目就可以知道是哪个类别了。
GetSetting("Wolf","Item", "ClassID")


工作表激活时,通过代码来控制格式,来源是基础资料或辅助资料、日期型格式字段都可以设置数据有效性,保证数据录入的正确性。
33.png


数据保存时,要先把来源为基础资料或辅助资料的字段转换为ID,再保存。这样当该项资料被修改时,不会影响已经被引用的资料。
通过这种设计方法,以后再有新增加的基础资料,只需要很少的代码量就可以完成数据的管理。



进销存系统设计.rar (110.68 KB, 下载次数: 147)




TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-22 17:44 | 显示全部楼层

系统中设置了6个类别,如果我们有新的类别如何增加?


1.在基础资料结构中增加新的类别:

44.png

一个类别一个编号,一个说明

录入后,点更新表的按钮,这时工作薄增加了一个名为【办公用品】的新表。


2.主控台上增加按钮及代码;

菜单上【开发工具】à【设计模式】,随便选中一个按钮,Ctrl+C,Ctrl+V,在要放置按钮的单元格中输入【办公用品】

55.png



3.转代码编辑器,在Worksheet_Activate过程中复制最后一段,并粘贴到最后

66.png

只需要修改红框中的内容即可


4.插入按钮执行代码

Private Sub CommandButton11_Click()

   SaveSetting "Wolf", "Item", "ClassID", 7

   sItem.Select

End Sub




一切结束,看结果

进销存系统设计.rar (121.34 KB, 下载次数: 379)


TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-23 17:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-1-24 08:38 | 显示全部楼层
lhm0926 发表于 2021-1-22 17:44
系统中设置了6个类别,如果我们有新的类别如何增加?

1.在基础资料结构中增加新的类别:

你可以用EXCEL做界面,数据存在ACCESS,也可用VB+ACCESS,也可以用SQL做数据库,更好用

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-24 09:49 | 显示全部楼层
凯哥003 发表于 2021-1-24 08:38
你可以用EXCEL做界面,数据存在ACCESS,也可用VB+ACCESS,也可以用SQL做数据库,更好用

后面改为VBA+ACCESS,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-1-24 10:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
系统的数据管理:
系统的数据管理可分为三个部分:
一、数据的管理:即新增,修改,删除等操作,这些操作是与用户进行交互的,对操作的要求较高。
        1.界面与操作要符合用户的操作习惯,提高学习与操作的效率;
        2.数据要保证准确与完整:具体相同选择的字段可以设置默认值,必须要录入的数据当没有录入时要有提示,特殊字段要有录入规范与限制。

二、数据的存储:目前系统是保存在excel表中,excel保存数据存在的问题:
        1.当别人复制excel系统时会把数据一起复制走,或者从别人那里复制修改版本时,造成本地的数据丢失,即便是重新把自己的数据复制过来,也要消耗大量的时间。
        2.excel存储容量有限,且存取速度慢。
        3.excel存储数据规范性不高,极易出问题。

三、数据加工与展现:数据录入并存储的目的是为了给用户展示加工后的数据,也就是常说的报表和数据分析,这些内容都可以做成特定的格式进行输出。

当以上三项进行分离时,一切就会变得简单,用户不会面对特殊的数据格式而束手无策。


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-1-25 15:45 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 09:38 , Processed in 0.053316 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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