我已在Classic ASP中完成编码,通过下拉列表和提交所选值来更新数据库来选择两个选项。它不起作用。我正在使用SQL查询" ../ sqlConnection.asp"位置,基本上包含更新年份和季节的数据库值的查询。我在SQL服务器上检查了数据库sql查询,SQL代码可以更新Year和Season。但只是通过经典ASP更新是行不通的。下面是我在经典ASP中的代码:
建议的解决方案有效:
我在表单标签中使用了action属性。我不得不在sql查询asp文件中执行此操作,在我的情况下../sqlConnection.asp:PCE_Update.Open(sqlqry)并且我必须包含另一个asp文件,其中定义了连接字符串,我错过了。
工作代码 - 编辑后的建议代码:
../ Example.asp:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<% Option Explicit %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Project Site</title>
<link rel="stylesheet" href="../css/reports.css" type="text/css" />
<style type="text/css">
</style>
</head>
<!--#include file="../sqlConnection.asp" -->
<!--#include file="../sqlConnection1.asp" -->
<%
Dim YearID
Dim SeasonID
Dim myStudentID
YearID = Request.Form("dYear")
SeasonID = Request.Form("dSeason")
If Request.ServerVariables("REQUEST_METHOD")= "POST" Then
myID = Request.QueryString("uniqueid")
Updatedate myID, YearID, SeasonID
End If
%>
<body>
<div align = "center">
<div>
<form id="form1" method="post" action="Example.asp<%= request.querystring %>">
<select class="dropYear" name="dYear">
<option value="select">2014</option>
<option value="2015">2015</option>
</select>
   
<select class="dropSeason" name="dSeason">
<option value="select">FALL</option>
<option value="Winter">WINTER</option>
</select>
<br /><br />
<ul class="buttons">
<input id="save" method="post" class="btTxt" type="submit" value="Submit"; />
</ul>
</form>
</div>
<br/>
</div>
</body>
</html>
这是我在&#34; ../ sqlConnection.asp&#34;中的SQL查询。从上面的代码调用。当我在SQL Server中运行时,下面的SQL查询工作正常,它会相应地更新特定员工ID的年份和季节。
../ sqlConnection.asp
Dim employeeid
Dim futureyear
Dim futureseason
Dim sqlquery
Dim PCE_Update
Dim sisconn
Sub Updatedate (employeeid,futureyear,futureseason)
sqlquery="update userdefinedind " & _
"set ayear = '" & futureyear & "' , aseason = '" & futureseason & "' " & _
"where employee_id = '" & employeeID & "' "
Response.Write(sqlquery)
set PCE_Update = server.CreateObject("ADODB.Recordset")
with PCE_Update
.ActiveConnection = sisconn
.CursorType = 1
.CursorLocation = 2
.Source = sqlqry
end with
PCE_Update.Open(sqlqry)
end sub
我有什么遗漏的吗?请建议。我在经典ASP方面做得不多,以为我可能会在这里找不到简单的步骤。
答案 0 :(得分:1)
由于您未使用action
,因此页面已发布回当前页面,但没有querystring
。
但是您依赖查询字符串进行更新操作 - 因为您使用的是myID = Request.QueryString("uniqueid")
,然后在更新的myID
条件中使用where
。这意味着,在回发之后,myID
具有空值,意味着没有更新操作。
要使其有效,请将操作属性更新为action="index.asp?<%= request.querystring %>"
将index.asp
替换为所需的值。
了解详情 - Post to current page, keeping querystring values in tact
编辑1
我告诉我要将action
添加到<form ..
标记。喜欢以下。
<form id="form1" method="post" action="example.asp?<%= request.querystring %>">
我相信,<input..
标记没有任何action
属性。
编辑2
您需要检查,如果有post
事件,那么只调用update
方法,所以要做到这一点,您需要将它们包含在if
检查中,如下所示。< / p>
<%
If Request.ServerVariables("REQUEST_METHOD")= "POST" Then
YearID = Request.Form("dYear")
SeasonID = Request.Form("dSeason")
myID = Request.QueryString("uniqueid")
Updatedate myID, YearID, SeasonID
End If
%>
答案 1 :(得分:0)
您发布的代码中没有操作属性。您是否尝试过添加显式操作(将数据发布到的页面)?
您的提交按钮也在结束表单标记之外。
修改强>
您在HTML表单中声明了变量,而不是正在进行处理的ASP页面。将它们移动到您的处理页面:
<%
YearID = Request.Form("dYear")
SeasonID = Request.Form("dSeason")
myID = Request.QueryString("uniqueid")
Updatedate myID, YearID, SeasonID
%>
然后调用您的更新方法:
Updatedate(myID, yearID, seasonID)
您需要在实际执行处理的页面中执行此操作,否则变量值将丢失。
我认为您还需要将Action属性从提交按钮移动到表单标记。