//继承TRemotable定义数据类型,实际上是返回一条数据库表记录type
Tdelivery=class(TRemotable)
private
Fkhbh:string;
Fnkxh:string;
Fhtbh:string;
Fbarcode:string;
Fhtsl:Extended;
Fdw:string;
Fcksl:Extended;
Fxh:string;
Fjz:Extended;//净重
Fmz:Extended;//毛重
Fckrq:Tdatetime;
Ffhrq:Tdatetime;
Fxdrq:Tdatetime;
published
Property nkxh : String Read Fnkxh Write Fnkxh;
Property khbh : string Read Fkhbh Write Fkhbh;
Property htbh : String Read Fhtbh Write Fhtbh;
Property barcode : string Read Fbarcode Write Fbarcode;
Property htsl : Extended Read Fhtsl Write Fhtsl;
Property dw : string Read Fdw Write Fdw;
Property cksl : Extended Read Fcksl Write Fcksl;
Property xh : string Read Fxh Write Fxh;
Property jz : Extended Read Fjz Write Fjz;
Property mz : Extended Read Fmz Write Fmz;
Property ckrq : Tdatetime Read Fckrq Write Fckrq;
Property fhrq : Tdatetime Read Ffhrq Write Ffhrq;
Property xdrq : Tdatetime Read Fxdrq Write Fxdrq;
end; Tdeliverys=array of Tdelivery; //定义返回的批量记录//下面是一个方法返回数据集到客户端
function TldDelivery.GetDeliveryRec(barcode: string): Tdelivery;
var
s:string;
m:Tdeliverys;
i:integer;
begin
with DM do
begin
if not ld.Connected then
ld.Connected:=true;
s:='select * from v_gpdy where barcode=' + barcode;
qry.close;
qry.SQL.Clear;
qry.SQL.Add(s);
qry.Open;
for i:=0 to qry.RecordCount-1 do
begin
setlength(m,qry.RecordCount);
m[i]:=Tdelivery.create;
m[i]:=Tdelivery.Create;
m[i].nkxh:=qry.fieldbyname('nkxh').AsString;
m[i].khbh:=qry.fieldbyname('khbh').AsString;
m[i].htbh:=qry.fieldbyname('htbh').AsString;
m[i].barcode:=qry.fieldbyname('barcode').AsString;
m[i].htsl:=qry.fieldbyname('htsl').AsFloat;
m[i].dw:=qry.fieldbyname('dw').AsString;
m[i].cksl:=0;
m[i].xh:='';
m[i].jz:=0;
// m.ckrq:=null;
m[i].fhrq:=qry.fieldbyname('fhrq').AsDateTime;
m[i].xdrq:=qry.fieldbyname('xdrq').AsDateTime;
end;//end if
result:=m;
end;//end with
end;
问题:上面是使用循环来实现传送多条记录到客户端的,请问能有办法不循环就能把批量查询到的数据传送到客户端么?
客户端可能有很多不同的语言来调用java,C#都有
Tdelivery=class(TRemotable)
private
Fkhbh:string;
Fnkxh:string;
Fhtbh:string;
Fbarcode:string;
Fhtsl:Extended;
Fdw:string;
Fcksl:Extended;
Fxh:string;
Fjz:Extended;//净重
Fmz:Extended;//毛重
Fckrq:Tdatetime;
Ffhrq:Tdatetime;
Fxdrq:Tdatetime;
published
Property nkxh : String Read Fnkxh Write Fnkxh;
Property khbh : string Read Fkhbh Write Fkhbh;
Property htbh : String Read Fhtbh Write Fhtbh;
Property barcode : string Read Fbarcode Write Fbarcode;
Property htsl : Extended Read Fhtsl Write Fhtsl;
Property dw : string Read Fdw Write Fdw;
Property cksl : Extended Read Fcksl Write Fcksl;
Property xh : string Read Fxh Write Fxh;
Property jz : Extended Read Fjz Write Fjz;
Property mz : Extended Read Fmz Write Fmz;
Property ckrq : Tdatetime Read Fckrq Write Fckrq;
Property fhrq : Tdatetime Read Ffhrq Write Ffhrq;
Property xdrq : Tdatetime Read Fxdrq Write Fxdrq;
end; Tdeliverys=array of Tdelivery; //定义返回的批量记录//下面是一个方法返回数据集到客户端
function TldDelivery.GetDeliveryRec(barcode: string): Tdelivery;
var
s:string;
m:Tdeliverys;
i:integer;
begin
with DM do
begin
if not ld.Connected then
ld.Connected:=true;
s:='select * from v_gpdy where barcode=' + barcode;
qry.close;
qry.SQL.Clear;
qry.SQL.Add(s);
qry.Open;
for i:=0 to qry.RecordCount-1 do
begin
setlength(m,qry.RecordCount);
m[i]:=Tdelivery.create;
m[i]:=Tdelivery.Create;
m[i].nkxh:=qry.fieldbyname('nkxh').AsString;
m[i].khbh:=qry.fieldbyname('khbh').AsString;
m[i].htbh:=qry.fieldbyname('htbh').AsString;
m[i].barcode:=qry.fieldbyname('barcode').AsString;
m[i].htsl:=qry.fieldbyname('htsl').AsFloat;
m[i].dw:=qry.fieldbyname('dw').AsString;
m[i].cksl:=0;
m[i].xh:='';
m[i].jz:=0;
// m.ckrq:=null;
m[i].fhrq:=qry.fieldbyname('fhrq').AsDateTime;
m[i].xdrq:=qry.fieldbyname('xdrq').AsDateTime;
end;//end if
result:=m;
end;//end with
end;
问题:上面是使用循环来实现传送多条记录到客户端的,请问能有办法不循环就能把批量查询到的数据传送到客户端么?
客户端可能有很多不同的语言来调用java,C#都有
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货