急用:在vb写excel的过程中,excel会停止响应,请问是什么原因,如何解决?

ALong_Yue 2002-08-10 09:27:11
在vb写的一个数据库程序中,需要把数据库中的数据进行处理,然后把处理结果写入到excel表格中,每次处理过程大约需要一秒左右的时间。开始运行一切正常,但是三四分钟之后,系统提示"Compnent Request Pending",说明excel停止响应!

请问是什么原因,如何解决?
解决问题,高分相酬!!!!
...全文
58 点赞 收藏 18
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wzsswz 2002-08-19
更正:tfmsdb.dbo.leave_card --》zydb.dbo.leave_card
回复
wzsswz 2002-08-19
下面已调试通过,可以参靠
create procedure datatoexcel
@sql varchar(500)
as
declare @cmd varchar(500)
set @cmd = 'bcp "' +rtrim(@sql)+'" queryout d:\temp.xls -c -S ALong_Yue -U sa -P 1234567'
exec master..xp_cmdshell @cmd


Private Sub Command1_Click()
Dim sql As String
Dim cnnstr As String
Dim cnn As New ADODB.connection
Dim rst As New ADODB.Recordset
On Error GoTo errlable1
sql = "select top 20 * from tfmsdb.dbo.leave_card"
cnnstr = " Provider = SQLOLEDB.1;Password=1234567;Persist Security Info=True;User ID=sa;Initial Catalog=zydb;Data Source=ALong_Yue "
cnn.open cnnstr
Set rst = cnn.execute("exec datatoexcel '" + sql + "'")
Exit Sub
errlable1:
MsgBox Err.Description
Err.Clear
End Sub
回复
wzsswz 2002-08-19

建一存储过程,把用于数据查询部分SQL作为入口参数。

create procedure datatoexcel
@sql varchar(500)
as
declare @cmd varchar(500)
set @cmd = 'bcp "' +rtrim(@sql)+'" queryout d:\temp.xls -c -S you_servername -U sa -P you_password'
exec master..xp_cmdshell @cmd


调用:
dim sql as string
dim cnnstr as string
dim cnn as adodb.connection
dim rst as adodb.recordset
sql = "select top 10 * from you_databasename.dbo.you_tablename"
cnnstr = "..."
cnn.open cnnstr
st rst = cnn.execute("exec datatoexcel '"+sql+"'")
注:
bcp(批量copy)功能一览表

usage: bcp {dbtable | query} {in | out | queryout | format} datafile
[-m maxerrors] [-f formatfile] [-e errfile]
[-F firstrow] [-L lastrow] [-b batchsize]
[-n native type] [-c character type] [-w wide character type]
[-N keep non-text native] [-V file format version] [-q quoted identifier]
[-C code page specifier] [-t field terminator] [-r row terminator]
[-i inputfile] [-o outfile] [-a packetsize]
[-S server name] [-U username] [-P password]
[-T trusted connection] [-v version] [-R regional enable]
[-k keep null values] [-E keep identity values]
[-h "load hints"]
回复
I_Love_IT! 2002-08-16
每次调用结束后记得.quit和set . nothing。
回复
ALong_Yue 2002-08-16
xiayule(下雨):
你的方法对内存的要求很高啊。因为我的数据量比较大,有没有更好的方法。

谢谢各位的帮助!
回复
xiayule 2002-08-14
法国去了
你看看,如果可以,就给分
回复
ALong_Yue 2002-08-14
(1).excel的visible=true
(2) 我的email: alongg@sina.com
回复
xiayule 2002-08-14
告诉我你的mail

源代码
回复
coolsky 2002-08-14
doevents
try it
你让excel的visible=true还是false???
false时有时会有多一些的问题出现。
回复
popety_bit 2002-08-13
up
回复
popety_bit 2002-08-13
up
回复
ALong_Yue 2002-08-13
出现问题的是vb的可执行程序。不知如何解决?最好有代码可以参考。
回复
ALong_Yue 2002-08-12
可是,在我的写入过程中,并没有对excel中的格式进行设定啊。另外,我的允许存盘,所以不能使用假存盘动作。

另外,对于停止响应的,如何在程序中唤醒?
谢谢前面三位了。
回复
CuiCanBin 2002-08-12
请再详细描述以下该问题,是VB的可执行程序还是组件(DLL等)在写Excel中
出现这样的错误。如果是DLL,该DLL是否是给ASP调用?
回复
silverstone 2002-08-12
我也遇到过同样的问题,从sql数据库中直接向excel逐格写数据,按照msdn上的做法,总是提示错误,各位能否提供一点源代码...
回复
chenyu5188 2002-08-10
只能UP了
回复
wiler 2002-08-10
楼上的说了
回复
keyterxian 2002-08-10
处理速度问题,你在写EXCEL过程中,不要用太多格式处理操作,比如对齐,打印格式设置等,还有就是画边框等,如果你的EXCEL数据只用于打印,可以不用存盘的话,最好用假存盘动作EXlsheet.saved=true,运行速度会快多了。
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7483

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2002-08-10 09:27
社区公告
暂无公告