手头有李维的书的热心人,进来帮小弟一把!好像书上有错误。(50分)

  • 主题发起人 主题发起人 张辉明
  • 开始时间 开始时间

张辉明

Unregistered / Unconfirmed
GUEST, unregistred user!
在李维的 delphi5.x 分布式多层应用系统篇中的,第2-29页上有一句:
SocketConnection1.AppServer.GetAllTables(vtblList);
appserver是socketconnection1 的一个属性。后面加上.GetAllTables(vtblList)是
什么意思?我知道这不是印刷错误,因为光盘中的范例也是这样的。程序执行到此处也会
发生错误,而中断。 该怎样改呢?
 
没有错。
你可能是单独运行了客户应用程序了或者应用服务器运行有错误
在XXXConnectoin连接成功后,AppServer返回的是应用服务器远程数据模块(RDM),
只要该RDM的接口支持GetAllTables方法,就可以正常运行。
检查一下吧。
 
在做这个之前不是做了个应用服务器吗.那个GetAllTables方法是那个应用服务器提供的.
 
应用服务器不可能有错的。我用windows server 2000 +SQL2000,来做服务的。
在应用服务器的窗体中,绝对不会有对的。跟书讲的一样,而且在执行
SocketConnection1.Connected := True;
后, 应用服务器自动开好启动的。
 
SocketConnection1.AppServer.GetAllTables(vtblList);
GetAllTables();服务器的一个过程,它属于一个自己编写的过程!~作用是取得当前数据库
内的所有表名!
 
你的服务器不输出getalltables,肯定会出错,你对照一下书,你没有编写这个接口。
 
正确的一塌糊涂,你的应用服务器又没添加GetAllTables接口函数啊?用Delphi的
type library(没写错吧?)就可以添加了!
 
uses
...,Your_TLB;
var
YourInterface: IXXX;
// change then
AppServer To YouInterface
 
書上沒錯啊
AppServer.
調用Server的方法,方法是自己寫的
 
李唯的书写的乱七八糟,我看不懂,最好别太认真!
 
楼上的别胡说。
李唯的书写的OK!OK!
 
李维的Delphi5.x分布式多层应用系统篇对三层中操作层面的东西写得很细,
但对Com没有任何提及,这是这本书最大的败笔,不知道他是不是故意回避
了这三层结构应用中的核心技术
 
老兄,书上没有错,在应用服务器上有一个类型库的接口
 
上面的问题我已经找到错误了,可是我还有一个问题,问过了一定马上给分。还是那本书上 2-30页
if (PageControl1.ActivePageIndex=0) then
begin
sSelect:=sSQL+listbox1.Items[listbox1.Itemindex];
clientdataset1.Close;
clientdataset1.CommandText:=sSelect;
clientdataset1.Open;
//执行到此发生错误了,
end
else
begin
sSelect:=memo1.Text;
clientdataset1.Close;
clientdataset1.CommandText:=sSelect;
ClientDataSet1.Open;
end;

错误提示为:
BOF 或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
这人错误消息是什么意思,为什么会发生这个错误,怎么解决?(前面那个“连结”按纽,执行很正常。)
谢谢!
 
procedure TDynamicSQLDemoServer.DataSetProvider1BeforeGetRecords(
Sender: TObject;
var OwnerData: OleVariant);
begin
TDataSetProvider(Sender).DataSet.Close;
TDataSetProvider(Sender).DataSet.Open;
if TDataSetProvider(Sender).DataSet.Bof and
TDataSetProvider(Sender).DataSet.Eof then
.......//表为空,不能取得数据
if not TDataSetProvider(Sender).DataSet.Bof then
TDataSetProvider(Sender).DataSet.First;

end;

procedure TDynamicSQLDemoServer.DataSetProvider1AfterGetRecords(
Sender: TObject;
var OwnerData: OleVariant);
begin
TDataSetProvider(Sender).DataSet.Close;
end;

这个应该能解决你的问题[:)]
 
to :yuanqs
谢谢你,问题解决了。可是我不太理解。你能讲清楚些吗?谢谢!
 
to yuanqs
这样做,虽然解决我上面的问题,但也有一个问题,你在取数据之前就对TDataSetProvider 进行刷新了,
但如果在客户端的Tclientdataset 里PacketRecords设为5 ,TdataSetProvider 里却有7条记录,那么
TClientdataset 就有无数条记录。
问题是到此结束,
szf 20
yuanqs 30
 
后退
顶部