如
如云
Unregistered / Unconfirmed
GUEST, unregistred user!
我现在是将原来的简单C/S系统转换为多层分布式系统,以适应将来分布计算的需要
现就下列问题请教各位大虾,有的问题可能非常幼稚,见笑了
1.怎样可以最快最简洁的迁移到多层系统上?除了Midas的方案之外还有没有其他更好的?
2.例如我想在客户端的登陆界面上显示本地区操作员列表,按以往做法,很简单,直接从数据库里取记录就行了,换到多层后以后该如何处理,是不是客户端一定不能写SQL语句,一切让应用服务器处理?
3.今天中午,我做了一个最简单的例子,感觉荆棘重重.先仿照Delphi提供的例子程序,应用服务器远程数据模块放了ADocoonection,AdoQuery,datasetprovider等,客户端数据模块上放了clientdataset和Dcomconection,属性都设置好了. 但执行的时候提示:invalid parameter
下面是出错的代码段:
client端: if not Dcomconection.Connected then
Dcomconection.Connected := True;
clientdataset.Close;
ClientDataSet.Open;
procedure TLoginFrm.ClientDataSet1BeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
begin
OwnerData := VarArrayOf(['select * from users', NULL]);
end;
Server端:
procedure TSQLAppServer.DataSetProvider1BeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
begin
try
ADOQ.Close;
ADOQ.SQL.Text := OwnerData[0];
if not VarIsNull(OwnerData[1]) and not VarIsEmpty(OwnerData[1]) then
begin
ADOQ.Open;
if not ADOQ.Locate(ADOQ.Fields[0].FieldName, OwnerData[1], []) then
raise Exception.Create('Record not found');
ADOQ.Next;
end;
finally
OwnerData := NULL;
end;
end;
现就下列问题请教各位大虾,有的问题可能非常幼稚,见笑了
1.怎样可以最快最简洁的迁移到多层系统上?除了Midas的方案之外还有没有其他更好的?
2.例如我想在客户端的登陆界面上显示本地区操作员列表,按以往做法,很简单,直接从数据库里取记录就行了,换到多层后以后该如何处理,是不是客户端一定不能写SQL语句,一切让应用服务器处理?
3.今天中午,我做了一个最简单的例子,感觉荆棘重重.先仿照Delphi提供的例子程序,应用服务器远程数据模块放了ADocoonection,AdoQuery,datasetprovider等,客户端数据模块上放了clientdataset和Dcomconection,属性都设置好了. 但执行的时候提示:invalid parameter
下面是出错的代码段:
client端: if not Dcomconection.Connected then
Dcomconection.Connected := True;
clientdataset.Close;
ClientDataSet.Open;
procedure TLoginFrm.ClientDataSet1BeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
begin
OwnerData := VarArrayOf(['select * from users', NULL]);
end;
Server端:
procedure TSQLAppServer.DataSetProvider1BeforeGetRecords(Sender: TObject;
var OwnerData: OleVariant);
begin
try
ADOQ.Close;
ADOQ.SQL.Text := OwnerData[0];
if not VarIsNull(OwnerData[1]) and not VarIsEmpty(OwnerData[1]) then
begin
ADOQ.Open;
if not ADOQ.Locate(ADOQ.Fields[0].FieldName, OwnerData[1], []) then
raise Exception.Create('Record not found');
ADOQ.Next;
end;
finally
OwnerData := NULL;
end;
end;