如何显示已下达的客户订单

时间:2012-05-04 20:56:46

标签: vb.net

嗨,我还有几个小时的时间,直到一个单一的项目到期为止 它是一个基本的Access数据库驱动的电子商务网站。我有一个主页,一个产品页面,一个订单页面,一个订单确认页面,一个购物车页面和一个查看当前订单页面。该站点使用具有三个表的Access数据库。包含所有客户详细信息的Customer表(FirstName,LastName,EmailAdd,CardNo,CardEx,SortCode,DeliveryAdd,Postcode)
Products表,包含所有产品信息,(ProductID,ProductName,Price,ProductType,Images,ProductDescription)。 以及包含CustomerID和ProductID的Orders表。 我设法让订单页面工作,这导致订单确认页面显示客户刚刚放置的详细信息。 这是我到目前为止在订单确认页面加载事件中的内容。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim strDatabaseNameAndLocation As String
    strDatabaseNameAndLocation = Server.MapPath("KingToots.mdb")
    Dim strSQLCommand As String
    strSQLCommand = "SELECT Customer.*, Products.ProductName FROM Customer" & _
        "INNER JOIN Products ON Customer.CustomerID = Orders.CustomerID ORDER BY Customer.CustomerID DESC;" 
    Dim objOleDbConnection As System.Data.OleDb.OleDbConnection
    objOleDbConnection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=" & strDatabaseNameAndLocation)
    objOleDbConnection .Open()
    Dim objOleDbCommand As System.Data.OleDb.OleDbCommand
    objOleDbCommand = New System.Data.OleDb.OleDbCommand(strSQLCommand, objOleDbConnection)
    Dim objOleDbDataReader As System.Data.OleDb.OleDbDataReader
    objOleDbDataReader = objOleDbCommand.ExecuteReader()
    Dim datDataTable As System.Data.DataTable
    datDataTable = New System.Data.DataTable()
    datDataTable.Load(objOleDbDataReader)
    gdvOrderdetails.DataSource = datDataTable
    gdvOrderdetails.DataBind()
    objOleDbConnection.Close()

End Sub

这将返回此错误“FROM子句中的语法错误”。我猜我的SQL代码错了。我注意到当我在订单页面下订单时,它在Access数据库中添加了一个条目,其中生成的CustomerID在customers表上为12,在orders表中为4。这些数字在生成时是否应该相同?提前谢谢。

2 个答案:

答案 0 :(得分:2)

在此处添加空格:

... Customer**SPACE**" & _
        "INNER...

(尽量不要因面对困难而伤害自己)

答案 1 :(得分:0)

你试过了吗?

strSQLCommand =“SELECT Customer。*,Products.ProductName FROM Customer,Products”& _ “在Customer.CustomerID = Orders.CustomerID ORDER BY Customer.CustomerID DESC; INNER JOIN Products;”