2013-08-26 35 views
0

我決定改寫我的問題以使其更容易一些。 我有三個字段如何在ASP中使用SQL更新表格中的最後一行

<form class="contact_form" action="divProgramProcess.asp" method="post" name="contact_form"> 
Couch: <input type="text" name="Couch_Current" id="Couch_Current" /> 
<br/> 
Available: 
<input type="text" name="Available_Current" id="Available_Current" /> 
<br/> 
Shipment: 
<input type="text" name="Shipment_Current" id="Shipment_Current" /> 
<input type="submit" value="submit" ></form>  

表單調用下面的代碼divProgramProcess.asp(如下圖所示)

<% 
divrec = request.QueryString("div") 
Set rstest = Server.CreateObject("ADODB.Recordset") 
rstest.locktype = adLockOptimistic sql = "SELECT top 1 * FROM CensusFacility_Records WHERE division_program = 'Division 1' and jmsday ='Sun' order by JMSUpdateDateTime desc " 
rstest.Open sql, db 
%> 

<% 
Shipment_Current = request.form("Shipment_Current") 
Couch_Current = request.form("Couch_Current") 
Available_Current = request.form("Available_Current") 

rstest.fields("Shipment") = Shipment_Current 
rstest.fields("Couch") = Couch_Current 
rstest.fields("Available") = Available_Current 
rstest.update 
Response.Redirect("chooseScreen.asp") 
%> 

現在記住,列「JMSUpdateDateTime」是一個日期字段和形式division_program列名稱下有多個'Division 1'記錄。 我正在嘗試更新SQL表中的最後一行,但每次運行此腳本時,我只更新第一個記錄,並且不是最後一個記錄。簡單地說:有10條包含分部1的記錄。它們都有日期時間戳列。我怎樣才能更新最後的記錄?

回答

1

試試這個:

SELECT * FROM CensusFacility_Records WHERE division_program = 'Division 1' 
and jmsday ='Sun' and JMSUpdateDateTime = (SELECT MAX(JMSUpdateDateTime) 
FROM CensusFacility_Records WHERE division_program = 'Division 1' and jmsday ='Sun')" 
+0

謝謝,但是當我運行查詢,我得到以下錯誤。 「BOF或EOF都爲True,或者當前記錄已被刪除,請求的操作需要當前記錄。」 – Jimmy

2

而不是通過記錄集更新運行實際的UPDATE語句。 Basicaly你將需要兩個步驟:

  1. 運行您SELECT TOP 1 ...查詢,但是從表retreive只是一個主鍵/標識字段(不是「*」),並將其保存到一些臨時變量
  2. 運行實際的SQL "UPDATE CensusFacility_Records SET Shipment = ... WHERE TABLE_ID = " & yourTempVariable

(最好是創建一個參數化查詢,而不是將參數添加到查詢字符串內聯)。這樣你就可以保證真正更新特定的記錄。

相關問題