导航: 好喜爱学习网 >> 网站制作 >> 网页制作技巧 >> DW MX实例:给产品下订单
相关文章
最新文章
文章内容
DW MX实例:给产品下订单
作者:未知 来源:网络收集 录入:管理员

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

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

  



  创作构思 单击购物车中的【确定下订单按钮】,将购物车中临时表“ 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 中的数据结构。

  



  这里需要特别说明的是,订单编号( 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] 

E-MAIL:309076721@163.com
本站为非营利性质个人网站,建站只为个人爱好与学习,内容大多为电脑技术教程;
网站内容来源于互联网收集整理,禁止用于非法途径,如发现本网站上有侵权的文章请联系我们,我们会尽快删除;
本站不对站点内容准确性、完整性和真实性作任何承诺,由此产生的后果本站不承担任何责任,对以上引起的一切法律纠纷本站无权利承担。