調用Com+中定義函數出錯,請各位大俠指點!(200分)

  • 主题发起人 主题发起人 P_W_Q
  • 开始时间 开始时间
P

P_W_Q

Unregistered / Unconfirmed
GUEST, unregistred user!
事件日志錯誤:
IObjectControl::Activate() 方法失敗。物件的 CLSID 為:
{849B6C09-3202-411E-AEC2-E782A41EA396}
伺服器應用程式 ID: {252BE792-6241-4983-8E6F-06D4B9750EC3}
伺服器應用程式名稱: ProviderInner
錯誤碼 = 0x80004005 : 不支援此種介面
COM+ 服務內部資訊:
檔案: ./jit.cpp, 行: 314
----------------------------
中間層定義函數:
function TProviderInner.CreateReguser(const sSQL: WideString): Integer;
begin
Result := 0;
With ADOQuerydo
begin
if Active then
Close;
SQL.Text := sSQL;
Try
ExecSQL;
SetComplete;
Except
On Exceptiondo
begin
SaveLog(sSQL);
//存儲出錯SQL語句 出錯結果=9
Result := 9;
raise;
SetAbort;
end;
end;
end;
end;
---------------------------------------------------
調用語句如下:
procedure TMainForm.SetPostClick(Sender: TObject);
var
vIntf :variant;
RetSult : integer;
sSQL :string;
begin
sSQL := 'Insert into SUser(User_no,User_nam,User_pwd,User_type,User_Chked,User_RegDat)'+
' values(''%s'',''%s'',''%s'',''0'',''0'',''%s'')';
sSQL := Format(sSQL,[User_noEdit.Text,User_namEdit.Text,UserPwd2.text,MyDatetoStr(Date)]);
vIntf := CreateOleObject('Provider.ProviderInner');
RetSult := vIntf.CreateReguser(sSQL);
If RetSult = 9 then
begin
RegErrorLabel.Caption := '提交失敗,請更換另一帳號!';
User_noEdit.SetFocus;
end;
end;
 
怎么無人回答?
 
老兄你是台湾的?
 
Interface Not support这个错误一般是指COM组件总没有实现相应的接口函数。
可能的原因:
1、你的函数CreateReguser是刚刚增加的,与实际使用的COM没有同步。
2、从你的代码看,似乎使用的是Local的COM组件,那么当你通过CreateOleObject创建
了一个COM之后,是不是在内存中有了这个COM的实例,导致你新生成的COM才有这个接口
函数,而内存中的这个没有?
 
后退
顶部