cuptbluesky (苦行僧) ,请进。关于主题: Midas高手请进,Wingsun,猛禽兄,兰企鹅,PPower,pazee,warton,invalid(太多了,写不下)麻
请问,你的问题解决了没有呢?我也遇到相应的问题。
什么我的服务器定义的函数不能更新呢?
下面是该函数:
STDMETHODIMP TTestMultiImpl::TestSave(VARIANT* CustVar)
{
int ErrCount=0;
m_DataModule->Database1->StartTransaction();
ShowMessage("pass StartTransaction()");//此处会执行
try
{
OleVariant& vCustVar=*(reinterpret_cast<OleVariant*>(CustVar));
if(!vCustVar.IsNull())
{
ErrCount=0;
m_DataModule->DataSetProvider1->ApplyUpdates(vCustVar,0,ErrCount,vCustVar);
if(ErrCount>0)
{
Error("Error in ApplyUpdates",IID_ITestMulti);
ShowMessage("pass Error if");
}
ShowMessage("pass if");//此处不执行
}
m_DataModule->Database1->Commit();
ShowMessage("pass Commit()");//此处也不执行
}
catch(Exception &e)
{
m_DataModule->Database1->Rollback();
ShowMessage("pass Rollback()");//此处执行
return Error(e.Message.c_str(),IID_ITestMulti);
}
return S_OK;
}
我的客户端是:
void __fastcall TForm1::QuerySaveClick(TObject *Sender)
{
OleVariant CustVar;
ClientDataSet1->CheckBrowseMode();
if(ClientDataSet1->ChangeCount>0)
CustVar=ClientDataSet1->Delta;
else
CustVar.ChangeType(VT_NULL);
try
{
IDispatch* disp=(IDispatch *)(DCOMConnection1->AppServer);
ITestMultiDisp srvr((ITestMulti*)disp);
srvr.Bind((IDispatch *)(DCOMConnection1->AppServer)) ;
srvr.TestSave(reinterpret_cast<VARIANTOBJ*>(&CustVar));
ShowMessage("pass");//此处会执行
}
catch(Exception &e)
{
Application->ShowException(&e);
}
}
调用时没有报错,可是就是不会更新
我想问:为什么会在服务器端执行到catch(Exception &e)里面去了呢?而没有报错呢?
请各位大哥指点迷津,小弟谢了先,问题解决了,再开贴感谢