VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2552|回复: 11

关于Midas三层数据库问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[复制链接]

1

主题

7

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-4 09:00:01 | 显示全部楼层 |阅读模式
我根据教材做了一个简单的Midas应用程序通过拨号网络实现数据的远程自动复制(插入).
(1)在服务器端建立remote data module 远程数据模块
      在其中加入database1 datasetprovider query1 控件
(2)在客户端加入tclientdataset tdatasourse tdcomconnection tdbgrid
      控件
现在能实现的功能是只要运行客户端程序服务器端自动运行并把服务器端query1 查询的内容反映在客户端tclientdataset里面可以在tdbgrid中显示出来.数据的传递基本就完成了但还是有很多不明白的地方希望各位大侠指点一二..................
具体问题:
    (1) 数据在dbgrid里面能显示出来但是如果要复制到数据库里面应如何操作
    (2) 如果是客户端发送数据到服务器操作方式又如何?具体点是想达到这样在客户端点发送然后服务器可以自动接收也可以点某个按钮来实现传递功能,也就是说数据的传递可以通过人工的方式干预
    (3) 软件如何实现自动拨号到服务器比如点连接--就开始通过猫拨号
    (4) 如何检测网络是否忙?



望各位大哥大姐指点密精小弟不胜感激!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

1

主题

7

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-4 11:00:01 | 显示全部楼层
兄弟们顶啦
回复

使用道具 举报

0

主题

15

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-4 14:06:01 | 显示全部楼层
我也很久没用Midas,反正你这是个例子,我就说几句,抛砖引玉:

1、你用的是BDE,应该在远程数据模块上放一个TSession,而Database最好不要放在远程数据模块上,因为这可能引起名字冲突。

2、你说的“dbgrid里面能显示出来但是如果要复制到数据库里面应如何操作”,这个问题不存在,因为既然dbgrid显示的本来就是本地数据集tclientdataset中的数据,无论这个数据是本地输入的,还是从服务器端接受。

3、客户端数据传送,使用tclientdataset.ApplyUpdates(-1);返回值是发送不成功的记录个数,注意不是已经发送的个数,发送不成功数据的原因不仅仅是数据有错误,也包括重复的记录,比如,你从服务器端接受100条记录,如果不做修改的ApplyUpdates,其结果是一条也不成功。

4、“软件如何实现自动拨号到服务器比如点连接--就开始通过猫拨号”,以前我在Win98下是这样调用的:
  if WinExec( PChar('RunDll32.exe Rnaui.dll,RnaDial ' + DialName),SW_SHOWNORMAL) <= 31 then
    ErrorDlg('调用拨号程序' + DialName + '失败!');
但是,上述代码在2000和xp下不起作用,我也没进一步研究它,因为我那个时候的客户端操作系统都是98,让楼下高手们说吧!

5、如何检测网络是否忙?这就很难说了,一般DCOMConnection连接成功就可以了,但是如果数据传输中间网络出问题,恐怕不太好检测,但是系统最后后告诉你连接超时。
回复

使用道具 举报

1

主题

7

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-4 14:27:01 | 显示全部楼层
如果是服务器向工作站传数据是不是也要加tclientdataset等(注:在服务器上?)
回复

使用道具 举报

0

主题

15

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-4 14:48:01 | 显示全部楼层
一般是客户端主动向应用服务器请求数据,只要TClientDataSet的设置无误,Open或者Active:=True就行了。
回复

使用道具 举报

1

主题

7

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-4 14:54:01 | 显示全部楼层
我还是不是很明白在客户端通过tclientdataset可以将服务器query的内容复制到工作站但是如果工作站的query要传到服务器是不是在服务器也要加入tclientdataset来获取工作站的数据?
回复

使用道具 举报

1

主题

7

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-4 15:51:01 | 显示全部楼层
上面说的我还想起了比如工作站我点<发送>tclientdataset active:=true就可以了,但在服务端怎样实现人工选择<接收>/<取消>?
回复

使用道具 举报

0

主题

15

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-4 17:09:01 | 显示全部楼层
但在服务端怎样实现人工选择<接收>/<取消>?
===============================================================================
我上面已经说了,一般都是客户端主动接受和发送,如果要在服务器端人工干预,可以通过远程数据模块的类型库写个登录请求过程,客户发送或者接收数据前登录确认就行了,在客户端,可以通过DCOMConnection.GetServer.自定义过程;这样的形式调用服务器端的登录过程
回复

使用道具 举报

1

主题

7

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-26 11:45:02 | 显示全部楼层
顶啦
回复

使用道具 举报

1

主题

7

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-1-26 16:00:01 | 显示全部楼层
工作站如何写数据到服务器:一般来说DCOM通过服务器发布数据到工作站但是如何实现从工作站返回数据到服务器数据库库里面通过Tdatasetclient?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表