Проблема с добавлением в корзину (Что мне не хватает) - PullRequest
0 голосов
/ 26 сентября 2011

Чего не хватает в коде?Какие-либо предложения?

Ошибка отображается следующим образом: -

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'orderID =1AND productID ='.
/mcartfree/addToCart.asp, line 49

Код пока

'Main program 
 Sub CreateNewOrder()
    Application.lock
    if Application("orderID") = "" then
        Application("orderID") = 1
    end if


   intOrderID = Application("orderID")
   Session("orderID") = intOrderID
   Conn.Execute("INSERT INTO orders " _
    & " (orderID, status) values " _
    & " ("&intOrderID&", 'OPEN')")

    Application("orderID") = Application("orderID") + 1
   Application.Unlock
End Sub

Sub AddToOrder(nOrderID, nProductID, nQuant)
    sqlText = "INSERT INTO itemsOrdered " _
        & " (orderID, productID, quantity) values " _ 
        & " ("&nOrderID&", "&nProductID&", "&nQuant&")"
    Conn.Execute(sqlText)

End Sub


'Main program 
intProdID = Request.form("intProdID")
intQuant = Request.form("intQuant")

set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConString

intOrderID = cstr(Session("orderID"))
if intOrderID = "" then
   CreateNewOrder
end if

sqlText = "SELECT * FROM itemsOrdered WHERE orderID =" & intOrderID & "AND productID =" & intProdID
set rsOrder = Conn.Execute(sqlText)

if rsOrder.EOF then
    txtInfo = "This item has been added to your order."  
    AddToOrder intOrderID, intProdID, intQuant
else
    txtInfo = "This item is already in your cart."
end if

Новая ошибка

Error Type:
Microsoft JET Database Engine (0x80004005)
Operation must use an updateable query.
/mcartfree/addToCart.asp, line 19

Теперь снова новая ошибка

Error Type:
Microsoft JET Database Engine (0x80004005)
Operation must use an updateable query.
/mcartfree/addToCart.asp, line 31

Ответы [ 2 ]

3 голосов
/ 26 сентября 2011

Возможно, вам не хватает пробела orderID = 1 AND productID = вместо orderID =1AND productID =.

Если ваша система наблюдения не может найти оператор AND, поскольку она представлена ​​в запросе как значение 1AND для поля orderId.

Обновите ваш запрос следующим образом:

sqlText = "SELECT * FROM itemsOrdered WHERE orderID = " & intOrderID & " AND productID = " & intProdID
set rsOrder = Conn.Execute(sqlText)
                                                     ^                  ^               ^
                                                 whitespace         whitespace!!!   whitespace
0 голосов
/ 26 сентября 2011

Запишите вашу строку SQL и посмотрите, верна ли она:

sqlText = "SELECT * FROM itemsOrdered WHERE orderID = " & intOrderID & " AND productID = " & intProdID
' Debug sql...
Response.Write(sqlText)
Response.End()
' Just debuging the SQL statement....

set rsOrder = Conn.Execute(sqlText)
...