急:为什么在EXCEL2000下出错? (50分)

  • 主题发起人 主题发起人 sunyb
  • 开始时间 开始时间
S

sunyb

Unregistered / Unconfirmed
GUEST, unregistred user!
程序中有SQL数据库输出到EXCEL中的功能,在EXCEL97下无出错信息。
但在EXCEL2000下运行时,大约在FormActivate时提示:
Access violation at address 0044c6a6 in modul'health.exe'.read of
address FFFFFFFF. 按确定后,程序可运行。
试过D5自带SERVER控件,SAVETOEXCEL控件或直接用COMOBJ连接都一样。
 
我也遇到相同问题,程序出错:
interface not supported
急急急急!!
 
sunyb:请自己提前或结束你的帖子,谢谢合作。
 
你不将源代码贴一点出来,怎么知道是什么问题?你用个断点,看到哪一段出问题,然后贴
出那一段,大家再帮你找。
 
我用过几次,没有问题的!你将你的代码贴出来看看!
 
我的代码是这样的,结果在EXCEL2000下就出错:Interface not supported
EA1.Connect;
EA1.Visible[0]:=False;
EA1.Workbooks.Add(xlWBATWorkSheet,0);
asheet:=EA1.Worksheets.Item[1];
Qy_pact_all.First;
//Qy_pact_all是一个Query控件
i:=2;
while not Qy_pact_all.Eofdo
begin
for j:=0 to Qy_pact_all.FieldCount-1do
aSheet.Cells[i,j+1].Value:=Qy_pact_all.Fields[j].AsString;
Qy_pact_all.Next;
i:=i+1;
end;
SaveDialog.Execute;
if SaveDialog.FileName<>'noname' then
begin
aSheet.SaveAs(SaveDialog.FileName);
ShowMessage('文件已保存為'+SaveDialog.FileName);
end;
 
试下Delphi中的Server组控改为 dcloffice2k50.bpl
1)就在 /DELPHI/BIN/
(不过我是 build 6.18 / update pack1)
你要先把dclaxserver50.bpl从DELPHI下掉。
在安装dcloffice2k50.bpl。
不然出不来。
2k 比 50 多许多东西。
好多我不会用。
WordGlobal,ExcelGlobal是干什么的???
delphi控制 Excel表怎么冻结。
我看你也是高手。相互交流一下。
 
其实excel可以直接使用sql方法。
查询数据库
 
!我保证你们看到以下的用法一定爽歪歪了!!!
这可是我三天工作的结果。唔。。。
---看最后终结者office。
--------------------------------
如果你们用的office97的server控件,那么用office2000时就要把server上的控件换掉。
做法:
1。在Componet里打开Install Packages.....
2.去掉borland sample automation server components
3.在project中点input type Library....
4.点add加入office2000的类库。(在Microsoft Office/office目录下的)
5。反正是什么Excel9.olb , Msword9.olb 和那些*.olb的东东,有excel的,word的,等。。。
6。palette page:改为servers(因为以前的office的控件完完了)
7。点install就好了。
这样office2000的问题我想应解决了。(如果你用的是什么word.application或excel.application 的控件的话)。
-----------
我的建议:
先用上面一的方法,再用comobj对象。
use comobj, excel_tlb;
//excel_tlb 是新excel控件的pas文件,你把新控件放在窗体上看它用的哪个.pas就好了,当然下面要把这个控件去掉。因为comobj不用这个控件。只用这个.pas如excel_tlb中的函数。
var xl:variant;
在事件里写:
xl:=createoleobject('Excel.Application');
然后打开excel或word录一个宏命令,并打开宏命令考入代码。
----以下是宏录下来的宏。
workbooks.add
Range("C5:D7").Select
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.Delete
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("A1")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3"
-------
现在把它改为以下:
xl.workbooks.add;
xl.Range['C5:D7'].Select;
xl.Sheets['Sheet2'].Select;
xl.ActiveWindow.SelectedSheets.Delete;
xl.Charts.Add;
xl.ActiveChart.ChartType := xlColumnClustered;
xl.ActiveChart.Location(xlLocationAsObject,'Sheet3');
现在运行一下,我保证你们爽歪歪!
看到规律了吗?
前面加上对象名,()改[],= 改:=,有参数时直接用,后加;
。哈哈,满意了吧,
用office的宏命令可是不用你去想编程的,全是手动。这样少写了一大堆代码。
bbcoll 如有不明白的朋友讨论可:bbcoll@china.com
-------------------------------------------------------
 
解决:是ADO未升级的关系
 
后退
顶部