socketconnection问题!!!

jxhywdh 2005-04-20 08:36:37
服务端 用方法 SetSQL(BSTR sql)

STDMETHODIMP TSQLDataServerImpl::SetSQL(BSTR sql)
{

m_DataModule->Query1->SQL->Text=AnsiString(sql);
return S_OK;
}


客户端

static WideString wsql;
wsql=Edit1->Text;
ISQLDataServerDisp srvr;
srvr.Bind(LPDISPATCH(SocketConnection1->AppServer));

srvr.setSQL(wsql.Copy()); //这一句在运行时出错

ClientDataSet1->Open();

提示: IsBound() @ c:\program files\borland\cbuild6\include\vcl\utilcls.h/4270
Press [Y]es to terminate,[N]o to contine and [C]ancel to Debug

按N 后跳出 Access violation at address 0040285A in module 'DataClient.exe ' .Read of address 00000000


不知是什么原因????
另:我在客户端用DCOM则没有该问题,但DCOM连接 不能在两台机器上使用
请知道的大侠告诉一下DCOM的设置 我试了在服务器上加上Everybody用户 在其它的机器上还是调不起服务器上的服务

...全文
165 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
MEFULEU 2005-06-06
  • 打赏
  • 举报
回复
我一向都喜欢这么调用:GetRecord为服务器的方法:


TVariant* data=new TVariant;
try
{
IDispatch* disp;
disp = (IDispatch*)(DM->SocketConnection1->AppServer);

IaaaDisp mydata((Iaaa*)disp);

mydata.GetRecord(WideString(sql),data); //第二个参数为返回结果

strtmp=*data;

}
__finally
{
delete data;
}
sunliwen780502 2005-05-21
  • 打赏
  • 举报
回复
服务器端是否运行了, ScktSrvr.exe.
jxhywdh 2005-04-21
  • 打赏
  • 举报
回复
又有问题了
我在服务器上加了个属性 nowsql


STDMETHODIMP TSQLDataServerImpl::get_nowsql(BSTR* Value)
{
try
{
Variant t ;
t= Form1->Edit1->Text;
*Value=t;
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_ISQLDataServer);
}
return S_OK;
};


STDMETHODIMP TSQLDataServerImpl::set_nowsql(BSTR Value)
{
try
{
Variant t ;
t=Value;
Form1->Edit1->Text=t;
}
catch(Exception &e)
{
return Error(e.Message.c_str(), IID_ISQLDataServer);
}
return S_OK;
};



在客户端
static WideString wsql;
wsql=Edit2->Text;
SocketConnection1->AppServer.OlePropertySet("nowsql", WideString(Edit2->Text));//, Temp);
能够设置属性


static WideString wsql;
SocketConnection1->AppServer.OlePropertyGet("nowsql", x);

SocketConnection1->AppServer.OlePropertyGet("nowsql", &x);

都 出错!!! 提示:不知道集合
不知要如何去取服务器上的属性???


suntonycomm 2005-04-20
  • 打赏
  • 举报
回复
有这个,不要用Bind ,上次出问题浪费了好几天。

OleVariant Temp;
Conn->Close();
Conn->Open( );

Conn->AppServer.OleProcedure("SetQuery", WideString(Edit1->Text), &Temp);
cdsTest->Data = Temp;
cdsTest->Open();

NetSpider9804040 2005-04-20
  • 打赏
  • 举报
回复
你在服务器端上的连接组件设置有问题,检查检查看!
jxhywdh 2005-04-20
  • 打赏
  • 举报
回复
你这个OleVariant Temp; 是干嘛用的我在服务器上
STDMETHODIMP TSQLDataServerImpl::SetSQL(BSTR sql)
没有后面的参数

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧