|
这是我的“购物车”的源代码: <%@ Page Language="VB" Debug="true" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleDb" %> <script runat="server"> Dim Cpbt As DataTable Dim Cpview as DataView Sub CrCpdatatable() Cpbt = New DataTable() Cpbt.Columns.Add(new DataColumn("CPID",GetType(String))) Cpbt.Columns.Add(new DataColumn("CPNAME",GetType(String))) Cpbt.Columns.Add(new DataColumn("CPDJ",GetType(single))) Cpbt.Columns.Add(new DataColumn("SL",GetType(Int32))) Cpbt.Columns.Add(new DataColumn("CPSUM",GetType(double))) End Sub Sub AddCpbt() Dim cpConn,Cpstring AS String Dim conn AS OleDbConnection Dim Cpadapter AS OleDbDataAdapter Dim Cpdat AS DataSet Dim dt AS DataTable cpConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.MapPath("data/dwdat.mdb") conn = New OledbConnection(cpConn) Cpstring = "SELECT CPID,CPNAME,CPDJ from DWCP WHERE CPID='" &Trim(Request.QueryString("CPID")) & "'" Cpadapter = new OleDbDataAdapter(Cpstring,conn) Cpdat = New DataSet() Cpadapter.Fill(Cpdat,"DWCP") dt = Cpdat.Tables("DWCP") Dim dr As DataRow = Cpbt.NewRow() dr(0) = dt.Rows(0)("CPID") dr(1) = dt.Rows(0)("CPNAME") dr(2) = dt.Rows(0)("CPDJ") dr(3) = 1 dr(4) = dr(2) * dr(3) Cpbt.Rows.Add(dr) End Sub Sub CpTotal() Dim i As Integer Dim Cpto As single=0 For i=0 to Cpbt.Rows.Count-1 Cpto=Cpto+Cpbt.Rows(i)(4) Next CPCOUNT.text=Cpto End Sub Sub ByGrid_Delete(sender As Object, e As DataGridCommandEventArgs) Dim dr As DataRow = Cpbt.NewRow() Dim itemCell As TableCell = e.Item.Cells(0) Dim item As String = ItemCell.Text CpView.RowFilter = "CPID='" & item & "'" If CpView.Count > 0 Then CpView.Delete(0) End If CpView.RowFilter = "" CpTotal ByGrid.DataSource = CpView ByGrid.DataBind() End Sub Sub CpUpdate_Click(sender As object, e As EventArgs) Dim i,j As Integer Dim _item As DataGridItem j=0 For i=0 To ByGrid.Items.Count-1 _item = ByGrid.Items(i) Dim CountText As TextBox = _item.FindControl("Sltxt") Cpbt.Rows(i)(3) = CountText.Text Cpbt.Rows(i)(4) = Cpbt.Rows(i)(2) * Cpbt.Rows(i)(3) Next CpTotal ByGrid.DataSource = New DataView(Cpbt) ByGrid.DataBind() End Sub Sub ClearBy_Click(sender As object, e As EventArgs) Dim i As Integer For i=0 to CpView.Count-1 CpView.Delete(0) Next CPCOUNT.text=0 CpView.RowFilter = "" ByGrid.DataSource = CpView ByGrid.DataBind() End Sub Sub Page_Load(Sender As Object,e As EventArgs) If Session("Cpshop") Is Nothing Then CrCpdatatable Session("Cpshop") = Cpbt Else Cpbt = Session("Cpshop") End If Cpview = New DataView(Cpbt) If (Not IsPostBack) Then If Session("USERNAME")="" or Session("USERNAME")=nothing Then response.Redirect("nologin.htm") End If AddCpbt CpTotal ByGrid.DataSource = Cpview ByGrid.DataBind() End If End Sub 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("USERNAME")+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("USERNAME") dr(3) = Cpbt.Rows(i)("SL") dr(4) = Newnow Cpdat.Tables("CPDD").Rows.Add(dr) next Cpadapter.Update(Cpdat, "CPDD") session("Cpshop")=nothing conn.close response.Redirect("ReEmail.aspx?DDID="+Tystring) End Sub </script> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title> <style type="text/css"> <!-- .style1 { color: #FFFFFF; font-weight: bold; font-size: 12pt; } --> </style></head> <body > <div align="center"> <form runat="server"> <table width="500" border="0" cellpadding="2" cellspacing="0"> <tr> <td height="30" bgcolor="#333333"> <div align="left"><span class="style1">我的购物车</span></div></td> </tr> <tr> <td height="58" valign="top"> <ASP:DataGrid AllowPaging="false" AutoGenerateColumns="false" BackColor="white" BorderColor="black" CellPadding=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" id="ByGrid" runat="server" ShowFooter="false" Width="90%" OnDeleteCommand="ByGrid_Delete" MaintainState="false"> <Columns> <asp:BoundColumn DataField="CPID" HeaderText="产品品编号" /> <asp:BoundColumn DataField="CPNAME" HeaderText="产品名" /> <asp:BoundColumn DataField="CPDJ" HeaderText="单价" DataFormatString="{0:c}"/> <asp:TemplateColumn HeaderText="数量"> <ItemTemplate> <asp:TextBox id="Sltxt" width="50" runat="server" Text='<%#Container.DataItem("SL")%>' /> </ItemTemplate> </asp:TemplateColumn> <asp:BoundColumn DataField="CPSUM" HeaderText="小计(元)" DataFormatString="{0:c}"/> <asp:ButtonColumn ButtonType="LinkButton" CommandName="Delete" HeaderText="删除" Text="删除" Visible="True"/> </Columns> </asp:DataGrid> </td> </tr> <tr> <td height="19" valign="top" align="left" style="font-size:9pt "><strong>合计: <asp:Label ID="CPCOUNT" runat="server" /> </strong></td> </tr> <tr > <td height="23" bgcolor="#F7F7F7"><div align="center"> <p> <asp:Button ID="SxBt" runat="server" Text="刷新购物车" OnClick="CpUpdate_Click" /> <asp:Button ID="ClBt" runat="server" Text="清空购物车" OnClick="ClearBy_Click" /> <asp:Button ID="NewOrder" runat="server" Text="确定下订单" OnClick="NewOrder_Click" /> <input name="ExBt" type="button" id="ExBt" value="退出购物车" OnClick=window.close()"> </p> </div></td> </tr> </table> </form></div> </body> </html>
提示: Exception Details: System.Data.OleDb.OleDbException: Data type mismatch in criteria expression.
Source Error: Line 24: Cpadapter = new OleDbDataAdapter(Cpstring,conn) Line 25: Cpdat = New DataSet() Line 26: Cpadapter.Fill(Cpdat,"DWCP") Line 27: dt = Cpdat.Tables("DWCP") Line 28: Dim dr As DataRow = Cpbt.NewRow()
|