0

我决定改写我的问题以使其更容易一些。我有一个包含三个字段的表单

<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 表中的最后一行,但每次运行此脚本时,我只用“Division 1”更新第一条记录,而不是最后一条记录。简单来说:有 10 条记录包含 Division 1。它们都有日期时间戳列。如何更新最后一条记录?

4

2 回答 2

2

而不是通过记录集进行更新,而是运行一个实际的 UPDATE 语句。基本上你需要两个步骤:

  1. 运行您的SELECT TOP 1 ...查询,但只从表中检索一个主键/身份字段(不是“*”)并将其保存到一些临时变量中
  2. 运行实际的 SQL"UPDATE CensusFacility_Records SET Shipment = ... WHERE TABLE_ID = " & yourTempVariable

(最好是创建一个参数化查询,而不是向内联查询字符串添加参数)。这样你就可以保证真正更新特定的记录。

于 2013-08-26T03:36:57.210 回答
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')"
于 2013-08-26T03:42:54.537 回答