原问题连接:
http://community.csdn.net/Expert/topic/3235/3235760.xml?temp=.7710382用的是TADOConnection,TADOQuery控件,数据库是SQL Server 2000
执行的存储过程大概如此:
BEGIN
SELECT A.FIELD1,A.FIELD2,B.FIELD2,C.FIELD2
INTO DB1.dbo.TABLE0
FROM DB2.dbo.TABLE1 A
LEFT JOIN DB2.dbo.TABLE2 B
ON A.FIELD1=B.FIELD1
LEFT JOIN DB2.dbo.TABLE3 C
ON A.FIELD1=C.FIELD1
END
当数据量较大时,执行时间就很长,所以需要有中止功能。就是在主程序界面中设置一中止执行按钮,用户点击它,就中止存储过程的执行。
请教各路前辈高手们如何实现...
http://community.csdn.net/Expert/topic/3235/3235760.xml?temp=.7710382用的是TADOConnection,TADOQuery控件,数据库是SQL Server 2000
执行的存储过程大概如此:
BEGIN
SELECT A.FIELD1,A.FIELD2,B.FIELD2,C.FIELD2
INTO DB1.dbo.TABLE0
FROM DB2.dbo.TABLE1 A
LEFT JOIN DB2.dbo.TABLE2 B
ON A.FIELD1=B.FIELD1
LEFT JOIN DB2.dbo.TABLE3 C
ON A.FIELD1=C.FIELD1
END
当数据量较大时,执行时间就很长,所以需要有中止功能。就是在主程序界面中设置一中止执行按钮,用户点击它,就中止存储过程的执行。
请教各路前辈高手们如何实现...
解决方案 »
- ClientDataSet1.SaveToFile 支持中文问题
- 跪求代码,谢谢高手们知道
- 通过'project/import type library'引用dll文件的时候报"加载类型库/DLL 时出错"
- 一人简单的问题
- sqlite3 3.6.18 xxtea加密移植到sqlite3.7源码中不能加密
- 我程序运行时会出现以下的错误,请教!
- 如何注册一个DCOM,让它跑在别的机子上?
- 为什么ClientDataset的数据不刷新?
- InstallShield专题论坛,诚邀您的加盟!!!
- 关于Word的难题,同志们帮帮忙!
- 哪里能找到TVideoCap、TVideoPlay这两个控件?
- 在互联网上实现计算机间的通信
数据库排序!!!!!
在你的TABLE0表,也就是你要插入的那个表上定义一个触发器:
CREATE TRIGGER [Tnn] ON [dbo].[TABLE0]
FOR INSERT
AS
select * From zz
再在你的数据库中建立一个ZZ表,里边一个字段一条记录就行了,不然又会浪费时间.当你在程序中按取消按钮时,写一条Rename语句,把ZZ表改个名.这样你的存储过程在插入时由于触发器失败,存储过程也就中止了.(在SQL中试了一下,可以.但没在DELPHI下写完整代码试验.)
根据这个现象,你把adoquery free掉应该可以(我没有试过,现在没有sql server环境)
不知你有什么好办法,说来听听,我真不知如何解决。复 lw549(那个孩子他爹):
也许kill掉可以,我也没试过,我想kill掉整个程序的连接应该都断开,不知是不是,你试的结果如何?但如果把ADOQuery Free掉,应该程序会出错的。复 capoatguitar(达达):
我也不知能不能,但有时候存储过程执行太长时间需要人工中断不知怎么办?难道就让它永远死机下去?我仍在等高手们的指点...
那的大斑竹很厉害,也乐于助人