年前接了一个小项目,其中一部分是将sql中的数据进行有选择的导出到一个mdb中。
这些是完全可以通过asp得sql语句进行操作的,但是还是想把主要导出的任务交给sql server去做,asp主要是调动这个程序而已。
想到以前做过的东西,觉得实现起来并不难,只是一个参数的问题。
开始实现:
先做一个dts,连接好数据源,添加一个数据导出任务,将数据导出到access中。
然后调用asp启动dts,测试成功。
重点问题是如何在asp中输入参数,传递到dts中。
开始去想如何直接输入参数给dts。可以使用全局变量。
添加一个全局变量在数据转换任务中使用带有参数的查询。
SELECT *
FROM fenlei
WHERE ( fl_id < ?)
这样可以有一个参数使用。那么参数如何赋值?
关键是这几个语句
Set objGlobal = objDTSPackage.GlobalVariables

objDTSPackage.LoadFromSQLServer servername, usrname, pwd, DTSSQLStgFlag_Default2, "", "", "", dtsname
 objDTSPackage.GlobalVariables("fl_id").Value = fl_id
 objDTSPackage.Execute

而且一定要注意,参数的赋值一定要在loadfromsqlserver之后才行。否则不成功!!!
源代码如下:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<form action='rundts.asp' method=post>
servername:<input type=text name=servername value='MINT'><br>
usrname:<input type=text name=usrname value="sa"><br>
pwd:<input type=password name=pwd value="sa"><br>
conn:<input type=text name=DTSSQLStgFlag_Default2 value="0"><br>
dtsname:<input type=text name=dtsname value="export"><br>
id:<input type=text name=fl_id ><br>
<input type=submit value=ok></form>


<%
dtsname=request.form("dtsname")
usrname=request.form("usrname")
servername=request.form("servername")
pwd=request.form("pwd")
fl_id=request.Form("fl_id")
DTSSQLStgFlag_Default2=request.form("DTSSQLStgFlag_Default2")
if dtsname="" or DTSSQLStgFlag_Default2="" or usrname="" or servername="" or pwd="" then
response.write("error")
response.end
else
response.write("dtsname:"&dtsname&"<br>")
response.write("usrname:"&usrname&"<br>")
response.write("servername:"&servername&"<br>")
response.write("DTSSQLStgFlag_Default2:"&DTSSQLStgFlag_Default2&"<br>")
dim objDTSPackage
dim objDTSStep
dim strResult
dim blnSucceeded

const DTSSQLStgFlag_Default = 0
const DTSStepExecResult_Failure = 1

set objDTSPackage = Server.CreateObject("DTS.Package")
blnSucceeded = true
'objDTSPackage.DTSGlobalVariables("fl_id").value = 10
Set objGlobal = objDTSPackage.GlobalVariables


objDTSPackage.LoadFromSQLServer servername, usrname, pwd, DTSSQLStgFlag_Default2, "", "", "", dtsname
 objDTSPackage.GlobalVariables("fl_id").Value = fl_id
 objDTSPackage.Execute

for each objDTSStep in objDTSPackage.Steps
if objDTSStep.ExecutionResult = DTSStepExecResult_Failure then
strResult = strResult & "Package " & objDTSStep.Name & " failed.<br>"
blnSucceeded = false
else
strResult = strResult & "Package " & objDTSStep.Name & " succeeded.<br>"
end if
next

if blnSucceeded then
Response.Write "<h1>Package Succeeded</h1>"
else
Response.Write "<h1>Package Failed</h1>"
end if

Response.Write strResult
end if
%>


 

posted on 2007-02-08 08:33  Mint  阅读(1206)  评论(4编辑  收藏  举报