心得/经验/绝招
从Access到Asp.net(二)
2006-08-21 11:04:00

【建立一个数据源】

新建一个数据库,取名叫:mini_shop.mdb 然后再c盘根目录下建立一个文件夹,取名minishop.下面我们该去菜场买菜了:到网上下载一些图片下来,这是你的商品图片,调试的时候需要有数据才行啊。把它们保存在myshop\images的文件夹里。

为方便大家学习,我把设计规划放到这里,有打印机的朋友,最好把设计规划打印一下,以便随时备查,我英文不好,所以自己取的英文字段名称常会忘记,有啦手册就方便多了。

点击浏览该文件

图片文件夹我也放在这里,分成了大图和小图

点击浏览该文件

根据数据结构图的要求建立一个数据表

建立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,一个查询用于清空中间表,一个查询用于加载中间表:分别是删除查询kindsDELETE 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