注册 | 登录 | 设为首页 | 加入收藏
您当前的位置:飞翔学院-IT中国 → 编程开发网页制作Dreamweaver → 文章内容

DW MX实例:给产品下订单

作者:佚名 来源:不详 发布时间:2007-11-3 0:50:27

  上一个实例中讲解了如何在线购物。当完成了在线购物后,就可以给产品下订单了,下订单时需要将产品发给客户以备核对,本实例就来讲解其实现过程。

  效果说明 在“ index.apx ”中浏览公司产品,然后单击【购买】按钮将产品添加到购物车中,当订购完毕后,单击购物车中的【确定下订单按钮】,将购物车中的产品添加到订单数据库中,再用邮件将订单自动发给客户,并显示出如图 84-1 所示的订单效果。

  

Dreamweaver



  创作构思 单击购物车中的【确定下订单按钮】,将购物车中临时表“ Cpdat ”里的所有记录添加到“ CPDD ”(产品订单)表中,再通过 System.Web.Mail 对象完成电子邮件的发送。

  操作步骤

  步骤一 给产品下订单

  ( 1 ) 打开“ CPBY.aspx ”页面,在 <script runat="server"> 中添加过程“ NewOrder_Click ”,其代码如下所述。

  Sub NewOrder_Click(sender As object, e As EventArgs)

  Dim cpConn,Cpstring AS String

  Dim conn AS OleDbConnection

  Dim Cpadapter AS new OleDbDataAdapter

  Dim Cpdat AS DataSet

  Dim dt AS DataTable

  Dim Newnow

  Dim Tystring as string

  cpConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath ("dat/dwdat.mdb")

  conn = New OledbConnection(cpConn)

  Cpstring = "SELECT * from CPDD"

  Cpadapter = new OleDbDataAdapter(Cpstring,conn)

  Dim yy as OleDbCommandBuilder=new OleDbCommandBuilder (Cpadapter)

  Cpdat = New DataSet()

  Cpadapter.Fill(Cpdat,"CPDD")

  Dim i as integer

  Newnow=now

  Tystring=session("USENAME")+Cstr(year(Newnow))+iif(len(month(Newnow))=2,cstr(month(Newnow)),"0"+cstr(month(Newnow)))+iif(len(day(Newnow))=2,cstr(day(Newnow)),"0"+cstr(day(Newnow)))+cstr(hour(Newnow))+cstr(Minute(Newnow))+cstr(second(Newnow))

  For i=0 to Cpbt.Rows.Count-1

  Dim dr As DataRow = Cpdat.Tables("CPDD").NewRow()

  dr(0) = Tystring

  dr(1) = Cpbt.Rows(i)("CPID")

  dr(2) = session("USENAME")

  dr(3) = Cpbt.Rows(i)("SL")

  dr(4) = Newnow

  Cpdat.Tables("CPDD").Rows.Add(dr)

  next

  Cpadapter.Update(Cpdat, "CPDD")

  session("Cpshop")=nothing

  Cpbt=nothing

  Cpview=nothing

  Cpdat=nothing

  conn.close

  response.Redirect("ReEmail.aspx?DDID="+Tystring)

  End Sub

  (读者可打开【光盘】|【源文件】|【实例 84 】|【 84.1.txt 】文件,直接复制)

  提示: OleDbDataAdapter 对象是 DataAdapter 对象的一种。 DataAdapter 对象是用于充当 DataSet 与实际数据源之间的对象, DataSet 可以通过 OleDbDataAdapter 对象来更新实际数据源,同样,实际数据源也可以通过 DataAdapter 更新 DataSet 对象。 DataAdapter 对象分为 SQLDataAdapter 对象和 OleDbDataAdapter 对象两种。 SQLDataAdapter 对象用于访问 SQL Server 等数据库, OleDbDataAdapter 对象用于访问使用 OLE DB 链接的数据库,如 Access 。如果代码使用了 OleDbCommandBuilder 对象,通过该对象就可以自动生成 InserCommand 、 DeleteCommand 、 UpdateCommand 属性所需要的 Command 对象,本例就是用它生成 InserCommand 的 Command 对象。

  图 84-2 所示是 CPDD 表(产品订单)在 Access 中的数据结构。

  

Dreamweaver



  这里需要特别说明的是,订单编号( DDID )是由用户的登录名、年、月、日、小时、分钟、秒组成的(以上时间参数都是用户下订单时的时间参数),所以代码为 Newnow=now ,首先取得下订单时的时间。代码 iif(len(month (Newnow)) =2,cstr(month(Newnow)), "0"+cstr(month(Newnow)) ,表示当前月份的位数小于 2 时,在其上面加上“ 0 ”,如目前月份为“ 5 ”时,则显示为“ 05 ”,所以代码为 Tystring=session( "USENAME") + Cstr( year(Newnow )) + iif(len (month ( Newnow ))=2 ,cstr (month( Newnow )), "0" + cstr (month( Newnow ))) + iif (len ( day( Newnow)) = 2 ,cstr( day( Newnow)),"0" + cstr( day( Newnow))) + cstr( hour( Newnow ))+ cstr( Minute( Newnow )) + cstr( second( Newnow ))) 。

  下面的代码

  For i=0 to Cpbt.Rows.Count-1

  Dim dr As DataRow = Cpdat.Tables("CPDD").NewRow()

  dr(0) = Tystring

  dr(1) = Cpbt.Rows(i)("CPID")

  dr(2) = session("USENAME")

  dr(3) = Cpbt.Rows(i)("SL")

  dr(4) = Newnow

  Cpdat.Tables("CPDD").Rows.Add(dr)

  Next

  Cpadapter.Update(Cpdat, "CPDD")

  表示每读取购物车临时表 Cpbt 中的一行数据,就为 Cpdat.Tables("CPDD") 对象添加新行,并将临时表 Cpbt 中的相关字段数据添加到 Cpdat.Tables("CPDD") 新行中。当把临时表 Cpbt 中的所有行都添加到 Cpdat.Tables("CPDD") 对象中时,通过 Cpadapter.Update(Cpdat, "CPDD") 把 Cpdat.Tables("CPDD") 对象更新到数据源中的“ CPDD ”表中。

  最后的代码 response.Redirect("ReEmail.aspx?DDID="+Tystring) 就是将页面指向“ ReEmail.aspx ”,并传递订单编号( Tystring )给参数 DDID 。

  ( 2 ) 通过步骤一已将订单添加到 CPDD 表中,接下来应该把订单作为邮件发给用户了。但 CPDD 表只包括“ DDID ”、“ CPID ”、“ USENAME ”、“ SL ”、“ DDTIME ” 5 个字段,没有关于产品单价和产品合计的数据,也没用户的电子邮箱,那怎么发邮件呢?其产品单价可以通过 DreamweaverCP 表中的“ CPDJ ”字段找到,而产品合计则通过将 CPDD 表中的“ SL ”与 DreamweaverCP 表中的“ CPDJ ”相乘得出,用户的电子邮箱可由 DreamweaverKH 表中的“ USEEMAIL ”字段找到。所有这些都需要表与表的联接。

[1] [2] [3]  下一页

  • 打印文档
  • 推荐好友
  • 返回顶部
  • 增大字体
  • 减少字体
关于本站 | 工作机会 | 合作网站 | 广告服务 | 市场合作| 联系我们 | 抽奖活动
版权所有: 武汉威俊科技有限公司 Copyright 2005-2007 www.ITCNW.COM All rights reserved