社区
Delphi
帖子详情
delphi 三层的一些问题
likeyrain
2012-07-05 05:44:56
大家好:
请教一下,delphi做三层
服务器端:remote data module+ADOConnection+ADOQuery+DataSetProvider
客户端:DCOMConnection+ClientDataSe
想请教一下:这样做,
1.服务器端怎样查看有多少个客户端连接,在必要的时候,怎样踢掉个别客户端
2.有多个客户端连接的时候,修改同一记录的可能性,怎样解决啊?
...全文
697
44
打赏
收藏
delphi 三层的一些问题
大家好: 请教一下,delphi做三层 服务器端:remote data module+ADOConnection+ADOQuery+DataSetProvider 客户端:DCOMConnection+ClientDataSe 想请教一下:这样做, 1.服务器端怎样查看有多少个客户端连接,在必要的时候,怎样踢掉个别客户端 2.有多个客户端连接的时候,修改同一记录的可能性,怎样解决啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
44 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chenxizx
2012-10-12
打赏
举报
回复
不知道现在楼主解决了这个问题没有,如果解决的话,可否将解决方案发布一下,让大家学习一下!
chenxizx
2012-10-12
打赏
举报
回复
呵呵,我也在研究这个问题,我还试了尝试关闭自己动态的开启或关闭服务端,但均未成功!
lyhoo163
2012-07-27
打赏
举报
回复
编辑一个方法,更新数据后,返回一个代码。不就知道,是否保存成功了吗?
likeyrain
2012-07-24
打赏
举报
回复
另外,ClientDataSet提交的时候,有同时修改同一记录的时候,后者是提交不成功,但不会有报错或者提示什么的
但会有的个ChangeCount的属性,这个其实是返回没有修改成功的记录条数,可以判定这个值,为0的时候就是保存成功,如果非0就是保存失败的记录数
likeyrain
2012-07-24
打赏
举报
回复
还是决定外加一socket连接去管理
likeyrain
2012-07-23
打赏
举报
回复
唉。。。
我看见佛
2012-07-23
打赏
举报
回复
[Quote=引用 37 楼 的回复:]
以前我也用delphi的三层控件写了个操纵远程服务器的程序,后来用户反映,他们明明录了或修改了数据,后来重新查询就发现数据没有保存成功,程序没有任何错误提示,我意识到可能是这些控件有问题,于是就放弃了用delphi的三层控件
[/Quote]…………………………
yifawu100
2012-07-23
打赏
举报
回复
以前我也用delphi的三层控件写了个操纵远程服务器的程序,后来用户反映,他们明明录了或修改了数据,后来重新查询就发现数据没有保存成功,程序没有任何错误提示,我意识到可能是这些控件有问题,于是就放弃了用delphi的三层控件
yifawu100
2012-07-23
打赏
举报
回复
我那个服务器是用C#写的,在delphi下写比较麻烦,.net的对象序列化很好用,delphi不知有没有这个功能?
likeyrain
2012-07-23
打赏
举报
回复
还有其它答案不?
likeyrain
2012-07-19
打赏
举报
回复
写服务器控件?
likeyrain
2012-07-18
打赏
举报
回复
我试了,也没成功
yifawu100
2012-07-18
打赏
举报
回复
delphi 的三层控件不好,数据没保存成功都没提示,很烦,自己写了个服务器解决了
likeyrain
2012-07-18
打赏
举报
回复
好的,谢谢,继续尝试
lyhoo163
2012-07-18
打赏
举报
回复
1、试了一天,可以上线增加一个有关“远程用户”的“计算机名”“IP地址”“用户名”“上线时间”(LISTVIEW控件)等信息。如“远程用户”下线,自动关闭一个用户。
2、但是,当“远程用户”非正常下线,就不能关闭该用户。因而,需要检测,踢除故障用户。
3、如果要强行关闭某“用户”,找不到关闭的入口方法。我试过了,枚举线程不行,枚举VCL也不行,网上参考资料有限。RemoteDataModule是COM接口方式,新增一个“实体”,资料不多,有点难。
4、建议通过模拟远程关闭方式,即模拟远程执行语句:
DataModule1.SocketConnection1.Connected:=False;
因为远程关闭,就是执行该语句,服务器响应接口在哪里?
5、试试服务器中:CoDisconnectObject(DataModule1.ComObject,0);
但找不到DataModule1.ComObject。
期待高手指点!
lyhoo163
2012-07-17
打赏
举报
回复
服务器响应客户端的动态RemoteDataModule,一般是单独为每个客户端建立一个。因此,可以将正在上线的客户踢除。
lyhoo163
2012-07-17
打赏
举报
回复
要想踢人的话,首先要获得服务器响应客户端的动态RemoteDataModule的句柄,但是几经尝试,未成功。
如有能者,可提供。
likeyrain
2012-07-16
打赏
举报
回复
嗯,这个只能记数?如果想踢人的话,好象不行吧?
lyhoo163
2012-07-14
打赏
举报
回复
在服务中,只要有人上线,就会激发一个动态连接。设一个计数器(FClientCount上线数)。
我的代码如下:自己参考做吧!
1、
procedure TTServer.RemoteDataModuleCreate(Sender: TObject);
begin
ADOCon.Connected:=False;
// ADOCon.ConnectionString:='Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=¾´ÀÏÔºÊý¾Ý¹ÜÀí;Data Source=LYHOO2';
ADOCon.ConnectionString:=ConnectionString;
ADOCon.Connected:=True;
FClientCount:= FClientCount+1;
end;
2、
procedure TTServer.RemoteDataModuleDestroy(Sender: TObject);
begin
FClientCount:= FClientCount-1;
end;
3、
procedure TServerFrm.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[3].Text:='在线: '+ IntToStr(FClientCount);
end;
likeyrain
2012-07-14
打赏
举报
回复
还有高人能指点一下不
加载更多回复(24)
Delphi
开发
三层
架构
Delphi
三层
框架开发客户端开发
一个轻量级
DELPHI
三层
架构
一个轻量级
DELPHI
三层
架构 基于RemObjects 适合用于学习 适合C/S转
三层
Delphi
XE10零基础实战快速入门
通过课堂上一个一个的实战例子,演示
Delphi
XE10的用法,最后通过一个完整的通讯录程序,让学员初步掌握软件开发的全部流程 让零基础学员快速入门
Delphi
编程,快速掌握
Delphi
的使用方法,并能够制作出自己的软件来。...
delphi
三层
结构源码
一个简单的
delphi
三层
结构源码
Delphi
XE7开发入门教程之DataSnap
三层
架构篇
Delphi
XE7开发入门教程之DataSnap
三层
架构篇 主要是
delphi
开发datasnap的案列 以前积分太多了,现在降下来 5个积分
Delphi
5,386
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章