在MS Access或OpenOffice.org Base中克隆PHP / MySQL数据库应用程序(带有一些自动化)

时间:2011-01-28 01:56:06

标签: database ms-access scripting automation openoffice-base

我不确定是在这里还是在SuperUser上问这个,所以如果不属于此,我会道歉。

我创建了一个小型的PHP / MySQL数据库应用程序,用于管理我母亲商店的客户忠诚度数据,打算在XAMPP的收银机电脑上进行本地设置。但是,我被要求在GUI关系数据库(如MS Access或OpenOffice Base)中重新实现系统,主要是因为她可以使用GUI(我不必编写)来执行邮件合并和图形报告等操作。

我可以轻松地复制我的MySQL表结构和关系,并创建一些更基本的表单和报告,但我从来没有在Access或Base中完成任何脚本,宏等。我的PHP处理的不仅仅是表单输入,还有一些脚本涉及到我不知道如何在Access / Base中实现。值得注意的是:如果我最终使用Access,它将是Access 2007。

以下是我正在尝试制作的内容的快速概述,以防它有所帮助。抱歉这个长度。

  

这项业务非常重要。烘焙食品市场,数据库正在取代实体印章卡忠诚度系统。每消费25美元,每位顾客都会在卡片上盖章。他们获得免费膳食如下:
   - 在第8枚邮票上,他们可以免费获得配菜    - 在第16张邮票上,他们可以免费享用普通餐    - 在24号邮票上,他们可以获得免费的家庭膳食,并且他们的卡重置为零邮票   必须记录每个印章的日期(否则我只增加一个字段而不是印章表)。

     

我有3个表:customersstampsfreebiescustomersstampsfreebies都有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中实现:

     
      
  1. 当用户选择客户并点击“添加邮票”按钮时:

         
        查询
    • stamps从该客户的最后一个邮票中获取索引=>局部变量N
    •   
    • 如果N == 24,则设置N = 0.将N增加1。
    •   
    • 使用当前日期,客户ID和索引N
    • 将记录插入stamps   
    • 如果N == 8,16或24,则会在freebies中插入一个具有适当大小的记录,并显示一条警告通知用户该客户已获得一些免费的狗屎。
    •   
  2.   
  3. 某种“查看客户”页面(表格?报告?),显示他们所赚取的所有邮票和免费赠品,并在未兑换的免费赠品旁边设有“兑换”按钮。

  4.         

    总的来说,我需要使其具有相当的傻瓜和“大按钮” - 尽可能自动化 - 商店的收银员应该能够在没有数据库知识的情况下使用它。

这在Access或Base这样的程序中是否实用,或者我应该说服她使用我的PHP版本?如果我需要编写代码,我需要自学哪种语言?我应该以不同的方式构建我的数据吗?我不知道从哪里开始。

3 个答案:

答案 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数据库。

最好的实施方式是你已经拥有的那种。