Delphi如何调用DTS包
我在SQLServer里,已经设计好了DTS包,在Delphi里如何调用它,就如在FORM页里加一个按钮,单击按钮就执行DTS包,成功返回成功,失败返回失败.我在网上查了好些例子都好复杂,不是看不懂,就是不实用.高手们,给写个简单例子吧
[解决办法]
先 用import type library 把 dtspkg.dll和dtspump.dll 安装好。
然后加入下面这个函数:
function execdts(strdts_name: string): boolean; var n: variant; oconnection: variant; ostep,otask,ocustomtask,mopackage: variant; begin mopackage := createoleobject(dts.package2); oconnection := mopackage.connections.new(sqloledb); ostep := mopackage.steps.new; otask := mopackage.tasks.new(dtsexecutepackagetask); ocustomtask := otask.customtask; mopackage.failonerror := true; ocustomtask.packagepassword := user; ocustomtask.filename := strdts_name; ocustomtask.name := execpkgtask; ostep.taskname := ocustomtask.name; ostep.name := execpkgstep; ostep.executeinmainthread := true; mopackage.steps.add(ostep); mopackage.tasks.add(otask); try mopackage.execute; except ocustomtask := n; otask := n; ostep := n; mopackage.uninitialize; execdts := false; exit; end; execdts := true; ocustomtask := n; otask := n; ostep := n; mopackage.uninitialize; end;
[解决办法]
给你一个一般性调用的例子,可以传参数的,共传入了6个参数。测试可以通过。
希望对你有帮助。
procedure TForm1.Button1Click(Sender: TObject);
var
aSql: String;
begin
with self.ADOQuery1 do
begin
Asql := 'exec master.dbo.xp_cmdshell ''dtsrun /S /E /N"dtsTest" /A"DestAddress":8="%s" '
+ '/A"DestUser":8="%s" /A"DestPwd":8="%s" '
+ '/A"SourceAddress":8="%s" /A"SourceUser":8="%s" /A"SourcePwd":8="%s"''';
aSql := Format(aSql, [
'192.168.1.100',
'sa',
'123',
'192.168.1.200',
'sa',
'456'
]);
close;
sql.Clear;
sql.Add(asql);
Execsql;
close;
end;
end;