0

ユーザーがチェックボックスから注文を選択したときに、注文テーブルから1つまたは複数のレコードを削除するために、このコードが機能します。在庫モジュールができたので、注文がキャンセルされたら、在庫レコードの更新数量 (製品数量を現在の在庫に戻す) が必要です。

実際には、コードが一度に 1 つのレコードを削除するように実装されていれば、これは問題になりません。ただし、この削除コードは複数のレコードを削除するために作成されたもので、私のスキルでは、別の更新SQLコマンドを追加する方法がわかりませんでした。ですから、私を助けていただけませんか。どうもありがとうございました。

以下は私の既存のコードです..

<%
    call navigation
    url = main_area & "?" & "page=" & page_current 
    return_page = "../backend/" &  url
    req_status = request("type")
    if req_status = "restore" then
        req_status = False
    else
        req_status = True
    end if

    record = request("bill_id")
    timestamp = now()
    record = trim(record)
    if len(record) > 3 then   ' multiple records was selected
        arrVals = split(record,",")             


        strSql = ""
        strSql = strSql & "DELETE * FROM tbl_bill_total WHERE "     
        for i = 0 to ubound(arrVals)
             if i = 0 then           
              strSql = strSql & "bill_id IN ("& trim(arrVals(i)) & "    "
             else
              strSql = strSql & ","& trim(arrVals(i)) & ""
             end if
        next
        strSql = strSql & ") "

        strSql2 = strSql2 & "DELETE * FROM tbl_order WHERE "    
        for t = 0 to ubound(arrVals)
             if t = 0 then
              strSql2 = strSql2 & " tbl_order.bill_id IN ("& trim(arrVals(t)) & "    "
             else
              strSql2 = strSql2 & ","& trim(arrVals(t)) & ""
             end if
        next
        strSql2 = strSql2 & "); "       

    else

        strSql  = "DELETE * FROM tbl_bill_total WHERE bill_id=" & record & " "  
        strSql2  = "DELETE * FROM tbl_order WHERE bill_id =" & record & " " 
    end if




Call DBConnOpen()
Set Rs = Server.CreateObject("ADODB.Recordset")
response.write strSql

conn.Execute strSql
conn.Execute strSql2
Call DBConnClose()

response.redirect return_page
%>

これが追加したい SQL ステートメントです。実行するには pd_id が必要なので、上記の SQL ステートメントを実行する前にこれを実行する必要があると思います。

Set rsOrder = conn.Execute("SELECT * FROM tbl_order WHERE bill_id = " & record & "" )           
pd_id = rsOrder.fields.item("pd_id")
od_qty = rsOrder.fields.item("od_qty")


Set rsInventory = conn.Execute("UPDATE tbl_inventory SET inv_qty_act = inv_qty_act + " & od_qty & ", inv_date =  " & date() & " WHERE pd_id = '" & pd_id & "'"  )   



(作業コード)
@John が提供するソリューションを使用すると、選択した 1 つまたは複数のレコードの数量をデータベースに戻すことができます。

以下は、追加 ')' を削除した作業コードです。

<%
Call DBConnOpen()
Set Rs = Server.CreateObject("ADODB.Recordset")

    call navigation
    url = main_area & "?" & "page=" & page_current 
    return_page = "../backend/" &  url
    req_status = request("type")
    if req_status = "restore" then
        req_status = False
    else
        req_status = True
    end if

    record = request("bill_id")
    timestamp = now()
    record = trim(record)
    if len(record) > 3 then   ' multiple records was selected
        arrVals = split(record,",")             


        strSql = ""
        strSql = strSql & "DELETE * FROM tbl_bill_total WHERE "     
        for i = 0 to ubound(arrVals)
             if i = 0 then           
              strSql = strSql & "bill_id IN ("& trim(arrVals(i)) & "    "
             else
              strSql = strSql & ","& trim(arrVals(i)) & ""
             end if
        next
        strSql = strSql & ") "

        strSql2 = strSql2 & "DELETE * FROM tbl_order WHERE "    
        for t = 0 to ubound(arrVals)

        Set rsOrder = conn.Execute("SELECT * FROM tbl_order WHERE bill_id = " & arrVals(t) & "")     
            pd_id = rsOrder.fields.item("pd_id")  
            od_qty = rsOrder.fields.item("od_qty")  
                od_qty  = DzToPcs(od_qty)
        conn.Execute("UPDATE tbl_inventory SET inv_qty_act = inv_qty_act + " & od_qty & ", inv_date =  " & date() & " WHERE pd_id = '" & pd_id & "'"  ) 

             if t = 0 then
              strSql2 = strSql2 & " tbl_order.bill_id IN ("& trim(arrVals(t)) & "    "

             else
              strSql2 = strSql2 & ","& trim(arrVals(t)) & ""
             end if
        next
        strSql2 = strSql2 & "); "       


'   response.Write "strSql3 = " & strSql3
    else


        Set rsOrder = conn.Execute("SELECT * FROM tbl_order WHERE bill_id = " & record & " ")             
            pd_id = rsOrder.fields.item("pd_id")  
            od_qty = rsOrder.fields.item("od_qty")  
                od_qty  = DzToPcs(od_qty)   
        conn.Execute("UPDATE tbl_inventory SET inv_qty_act = inv_qty_act + " & od_qty & ", inv_date =  date() WHERE pd_id = '" & pd_id & "'"  ) 

        strSql  = "DELETE * FROM tbl_bill_total WHERE bill_id=" & record & " "  
        strSql2  = "DELETE * FROM tbl_order WHERE bill_id =" & record & " " 
    end if




'Call DBConnOpen() --> move to top line
'Set Rs = Server.CreateObject("ADODB.Recordset") --> move to top line
'response.write strSql2

conn.Execute strSql
conn.Execute strSql2
Call DBConnClose()

response.redirect return_page
%>
4

1 に答える 1

1

次のように、ループで在庫の逆転を行うことをお勧めします。

<%
    call navigation
    url = main_area & "?" & "page=" & page_current 
    return_page = "../backend/" &  url
    req_status = request("type")
    if req_status = "restore" then
        req_status = False
    else
        req_status = True
    end if

    record = request("bill_id")
    timestamp = now()
    record = trim(record)
    if len(record) > 3 then   ' multiple records was selected
        arrVals = split(record,",")             


        strSql = ""
        strSql = strSql & "DELETE * FROM tbl_bill_total WHERE "     
        for i = 0 to ubound(arrVals)
             if i = 0 then           
              strSql = strSql & "bill_id IN ("& trim(arrVals(i)) & "    "
             else
              strSql = strSql & ","& trim(arrVals(i)) & ""
             end if
        next
        strSql = strSql & ") "

        strSql2 = strSql2 & "DELETE * FROM tbl_order WHERE "    
        for t = 0 to ubound(arrVals)

Set rsOrder = conn.Execute("SELECT * FROM tbl_order WHERE bill_id = " & arrVals(t)) & "" )             
pd_id = rsOrder.fields.item("pd_id")  
od_qty = rsOrder.fields.item("od_qty")  
conn.Execute("UPDATE tbl_inventory SET inv_qty_act = inv_qty_act + " & od_qty & ", inv_date =  " & date() & " WHERE pd_id = '" & pd_id & "'"  ) 

             if t = 0 then
              strSql2 = strSql2 & " tbl_order.bill_id IN ("& trim(arrVals(t)) & "    "
             else
              strSql2 = strSql2 & ","& trim(arrVals(t)) & ""
             end if
        next
        strSql2 = strSql2 & "); "       

    else

Set rsOrder = conn.Execute("SELECT * FROM tbl_order WHERE bill_id = " & record & "" )             
pd_id = rsOrder.fields.item("pd_id")  
od_qty = rsOrder.fields.item("od_qty")  
conn.Execute("UPDATE tbl_inventory SET inv_qty_act = inv_qty_act + " & od_qty & ", inv_date =  " & date() & " WHERE pd_id = '" & pd_id & "'"  ) 

        strSql  = "DELETE * FROM tbl_bill_total WHERE bill_id=" & record & " "  
        strSql2  = "DELETE * FROM tbl_order WHERE bill_id =" & record & " " 
    end if




Call DBConnOpen()
Set Rs = Server.CreateObject("ADODB.Recordset")
response.write strSql

conn.Execute strSql
conn.Execute strSql2
Call DBConnClose()

response.redirect return_page
%>
于 2012-10-02T22:40:32.393 に答える