DELPHI,com 问题!!!!!!!!!1(200分)

  • 主题发起人 主题发起人 一剑封喉
  • 开始时间 开始时间
Adnil兄,多谢,其实也没有什么代码,除了Destroy,Initialize之外就建立了两个函数
都是由一个ADOQUERY执行了几个SQL,没有什么。而且就是要用在ASP上要调用这两个函数的
! 你有没有类似的原码让我看看,我将终生感谢,小弟在这里叩拜了。。。。我都急的不行了
怎么弄的都不行!有没有可能和WINDOWS有关系或则注册COM的方法?

再就是我在COM中ADOCONNECTION的连接串都是每回打开前定义的,因为这个COM要连接
的数据库是两台。难道和这里也有关系吗?
 
大致上可以是这样一个结构,使用automation object

unit Example;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
ComObj, ActiveX, PM_TLB, StdVcl, ADODB;

type
TExample = class(TAutoObject, IExample)
private
FConnection: TADOConnection;
protected
procedure Test; safecall;
public
procedure Initialize; override;
destructor Destroy; override;
{ Protected declarations }
end;

implementation

uses ComServ;

const
sConnectionStr: string = 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source=E:/Work/PM/root/data/Project.mdb;Persist Security Info=True';

destructor TExample.Destroy;
begin
inherited;
FConnection.Free;
end;

procedure TExample.Initialize;
begin
inherited;
FConnection := TADOConnection.Create(nil);
FConnection.ConnectionString := sConnectionStr;
FConnection.CursorLocation := clUseServer;
FConnection.LoginPrompt := False;
FConnection.Connected := True;
end;

procedure TExample.Test;
begin
FConnection.Execute('update....');
end;

initialization
TAutoObjectFactory.Create(ComServer, TExample, Class_Example,
ciMultiInstance, tmApartment);

end.

我这里的工程名是pm,asp就能这样调用
set o = server.createobject("pm.example")
o.test;
set o = nothing
 
Adnil兄 ,多谢,我的代码和你的差不太多,但是在ASP中我的COM建立对象后是不释放的
而是把它放到SESSION中用,因为有好几个地方都要调用此对象,总是释放再创建太麻烦
所以才不set nothing,你看和这有关系吗?
 
ASP要使用的COM
必须以Automation 来实现
 
多谢各位兄弟,搞定了,原因是我在COM创建之后放到了SESSION中而没有马上释放,
结果系统瘫痪,不过还是要多谢各位指点,尤其是Adnil兄!
 
多人接受答案了。
 
后退
顶部