我不确定是在这里还是在SuperUser上问这个,所以如果不属于此,我会道歉。
我创建了一个小型的PHP / MySQL数据库应用程序,用于管理我母亲商店的客户忠诚度数据,打算在XAMPP的收银机电脑上进行本地设置。但是,我被要求在GUI关系数据库(如MS Access或OpenOffice Base)中重新实现系统,主要是因为她可以使用GUI(我不必编写)来执行邮件合并和图形报告等操作。
我可以轻松地复制我的MySQL表结构和关系,并创建一些更基本的表单和报告,但我从来没有在Access或Base中完成任何脚本,宏等。我的PHP处理的不仅仅是表单输入,还有一些脚本涉及到我不知道如何在Access / Base中实现。值得注意的是:如果我最终使用Access,它将是Access 2007。
以下是我正在尝试制作的内容的快速概述,以防它有所帮助。抱歉这个长度。
这项业务非常重要。烘焙食品市场,数据库正在取代实体印章卡忠诚度系统。每消费25美元,每位顾客都会在卡片上盖章。他们获得免费膳食如下:
- 在第8枚邮票上,他们可以免费获得配菜 - 在第16张邮票上,他们可以免费享用普通餐 - 在24号邮票上,他们可以获得免费的家庭膳食,并且他们的卡重置为零邮票 必须记录每个印章的日期(否则我只增加一个字段而不是印章表)。我有3个表:
customers
,stamps
和freebies
。customers
与stamps
和freebies
都有1对多的关系。
customers
是一个简单的联系人列表 列:ID, firstname, lastname, email, phone
stamps
记录所获得的每张邮票。
列:ID, customerID, date, index
(1-24;该客户卡上的第N张印章)freebies
记录他们获得的每一顿免费餐 列:ID, customerID, date, size, is_redeemed
这是PHP的神奇之处,我不知道如何在Access / Base中实现:
当用户选择客户并点击“添加邮票”按钮时:
查询
stamps
从该客户的最后一个邮票中获取索引=>局部变量N- 如果N == 24,则设置N = 0.将N增加1。
- 使用当前日期,客户ID和索引N
将记录插入stamps
- 如果N == 8,16或24,则会在
freebies
中插入一个具有适当大小的记录,并显示一条警告通知用户该客户已获得一些免费的狗屎。- 醇>
某种“查看客户”页面(表格?报告?),显示他们所赚取的所有邮票和免费赠品,并在未兑换的免费赠品旁边设有“兑换”按钮。
总的来说,我需要使其具有相当的傻瓜和“大按钮” - 尽可能自动化 - 商店的收银员应该能够在没有数据库知识的情况下使用它。
这在Access或Base这样的程序中是否实用,或者我应该说服她使用我的PHP版本?如果我需要编写代码,我需要自学哪种语言?我应该以不同的方式构建我的数据吗?我不知道从哪里开始。
答案 0 :(得分:4)
答案 1 :(得分:2)
我不能代表Base。但Access可以直接链接到MySQL数据库,因此您不必重做数据。至于在Access中创建代码中的一些代码,这将非常容易。 Access,Word和Excel,使用与Access,Word或Excel对象模型特定内容相同的VBA到Visual Basic 6.0。实际上,在VB6编辑器中也存在使用VBA编辑器时出现的一个模糊不清的错误。
我还要补充说,我的一个Access数据库有160个表,1200个查询,350个表单,450个报告和70K行代码。所以通过比较你的应用程序非常小。
在免费赠品表上,我会将is_redeemed字段更改为date_redeemed。我绝对同意将每张邮票和免费赠品记录在表格中作为单独的记录。这样就可以很容易地向客户展示历史,而不仅仅是说明你只有x个邮票。
还可以考虑使用条形码阅读器并发布用户条形码塑料钱包卡。这将大大加快职员查询记录所需的时间。事实上,考虑使用他们可能已经拥有的区域会员卡,例如Safeway或AirMiles卡。我把这个数字放在一个单独的表中,以防它们丢失了第一张卡。或者他们可以跟踪多张牌。一个家庭可能希望将积分积分到一个帐户中。
感谢lenghty发布。这使我们能够首先就您可能没有想到的不同方面提供一些建议。
答案 2 :(得分:1)
我的建议:不要这样做。在有问题的PC上运行mysql服务器,将您的PHP应用程序作为收银员的前端,然后如果您想要MS Access的报告功能,只需让Access通过ODBC连接到mysql数据库。
最好的实施方式是你已经拥有的那种。