

根据数据结构图的要求建立一个数据表
建立tab_pkinds 表,在这里凡是表我们都以tab为开头,表里只有一个字段:pkinds,一个自动编号字段,大家在设计表的时候,自动编号字段无论有用与否,都应该保留。
建立tab_pinfo 表:该表的设计视图如下:这里比较特殊的是pkind字段,他的格式是数字,其实是和tab_pkinds 表的id做了绑定,用一个组合框来显示,这是罗斯文的典型示例。
建立以下几个表:Tab_salerescord: 销售记录表,Tab_salelist: 订单表,
有两个用户表,一个是系统用户的,一个是顾客的
好了,全部表已经建立完成了,共六个,在tab_pkinds,tab_pinfo,tab_idmininfo,tab_userinfo这四个表中都手工输入3条以上的数据,整个数据库看起来就像这个样子:(你的跟我的一样吗?)
然后以独占方式打开数据库,设定数据库密码。我的密码为123
【链接数据建立后台】
建立一个叫 后台.mdb 的数据库,打开,从 文件----获取外部数据-----链接表----找到C:\mini_shop.mdb-----输入密码-----点击全选----点击确定
【商品类别管理的设计】
先看一下我们要达到的效果:这个效果应该是事先用一张草稿纸画出来的,然后再考虑怎样用设计实现
我们可以逐条的修改和删除,点击添加就添加一条记录。
这其实有一个经常被提及到的问题,如何实现点击某个按钮,来实现保存记录的的功能,否则视为放弃。这里引入了一个中间表的概念。就是看到的数据和操作的数据不是同一个表,这里绕过了access自动保存的功能。我们用ado操作数据表tab_pkinds 而显示时通过tmp_pkinds 来实现。
我们通过复制tab_pkinds ,然后粘贴得到本地表tmp_pkinds,
用向导生成chindfrm_pkinds_mat,如图所示:然后再主体添加两个按钮“修改”,“删除”,在窗体页脚添加文本框和一个按钮:
我们需要两个查询来操作中间表tmp_pkinds,一个查询用于清空中间表,一个查询用于加载中间表:分别是删除查询kinds:DELETE tmp_Pinfo.*FROM tmp_Pinfo;
追加查询:Qur_addpkinds:
INSERT INTO tmp_pkinds ( id, pkinds )
SELECT tab_pkinds.id, tab_pkinds.pkinds
FROM tab_pkinds
ORDER BY tab_pkinds.id;
在vba中我们建立 一个过程,用来连续执行这两个查询:
'生成显示数据Private Sub Record_show() DoCmd.OpenQuery "qur_delpkinds" DoCmd.OpenQuery "qur_addpkinds"End Sub
用dao对链接表进行操作:
Private Sub Command4_Click()'保存修改信息Dim d As RecordsetDim sqlstr As String sqlstr = "select * FROM tab_Pkinds WHERE id=" & Me![id] Set d = CurrentDb.OpenRecordset(sqlstr) d.Edit d(1) = Me.pkinds d.UpdateEnd Sub
Private Sub Command5_Click()'删除该条记录Dim sqlstr As String sqlstr = "DELETE * FROM tab_Pkinds WHERE id=" & Me![id] DoCmd.RunSQL (sqlstr) Record_showMe.RequeryEnd Sub
Private Sub Command8_Click()'添加商品类别Dim d As Recordset Set d = CurrentDb.OpenRecordset("tab_pkinds") d.AddNew d(1) = Text7 d.Update Me.Text7 = Null Record_showMe.RequeryEnd Sub
【商品信息管理设计】
商品信息管理的设计原理和种类管理的一样,这里不再赘述。主要是编辑按钮的代码:
Private Sub editpinfo_Click()'保存修改信息Dim d As RecordsetDim sqlstr As String sqlstr = "select * FROM tab_Pinfo WHERE id=" & Me![id] Set d = CurrentDb.OpenRecordset(sqlstr) d.Edit d(1) = Me.pname d(2) = Me.pkind d(3) = Me.price d(4) = Me.lprice d(5) = Me.pcount d(6) = Me.pimg d(7) = Me.pmsg d.UpdateEnd Sub
Private Sub Form_Load() DoCmd.OpenQuery "qur_delpinfo" DoCmd.OpenQuery "qur_addpinfo" Me.RequeryEnd Sub
【添加新商品的设计】
代码:添加新商品
Private Sub Command17_Click() If IsNull(Me.pname) Then MsgBox "请填写商品名称" Exit Sub End If If IsNull(Me.pkind) Then MsgBox "请填写商品类别" Exit Sub End If If IsNull(Me.price) Then MsgBox "请填写商品价格" Exit Sub End IfDoCmd.GoToRecord , , acNewRec
End Sub