procedure TFrmZHSPQKZB.get_xjczfpm(ACZFPM: string);
var
vstr:String;
vpoint:pointer;
vflag:boolean;
i:integer;
begin
cds2.Create(nil);
cds2.FieldDefs.Add('czfpm',ftString, 30, False);
cds2.FieldDefs.Add('s_dwjc',ftInteger);
cds2.CreateDataSet;
cds2.Open;
cds2.EmptyDataSet;
with AdoQuery3 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from xt_ysdw where (s_sjczfpm=:fpm) order by s_czfpm';
parameters.ParamByName('fpm').Value:=ACZFPM;
Open;
end;
cds2.Append;
cds2.FieldByName('czfpm').AsString:='wf';
cds2.FieldByName('s_dwjc').AsString:='2';
cds2.Post;
AdoQuery3.First;
while not AdoQuery3.Eof do
begin
cds2.Append;
cds2.FieldByName('czfpm').AsString:=AdoQuery3.fieldbyname('s_czfpm').AsString;
cds2.FieldByName('s_dwjc').AsString:=AdoQuery3.fieldbyname('s_dwjc').AsString;
cds2.Post;
AdoQuery3.Next;
end; cds2.First;
while not cds2.Eof do
begin
with AdoQuery3 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from xt_ysdw where (s_sjczfpm=:fpm) order by s_czfpm';
parameters.ParamByName('fpm').Value:=cds2.fieldbyname('czfpm').AsString;
Open;
end;
AdoQuery3.First;
vSTR:=cds2.FieldByName('czfpm').AsString;
while not AdoQuery3.Eof do
begin
cds2.Append;
cds2.FieldByName('czfpm').AsString:=AdoQuery3.fieldbyname('s_czfpm').AsString;
cds2.FieldByName('s_dwjc').AsString:=AdoQuery3.fieldbyname('s_dwjc').AsString;
cds2.Post;
AdoQuery3.Next;
end;
cds2.Locate('czfpm', VarArrayOf([vstr]), [loPartialKey]);
cds2.Next;
end;
cds2.Append;
cds2.FieldByName('czfpm').AsString:=ACZFPM;
cds2.FieldByName('s_dwjc').AsString:='1';
cds2.Post;
end;
代码如上,cds2为一TClientDataSet,为什么在多次调用这一过程后,cds2循环不了????
var
vstr:String;
vpoint:pointer;
vflag:boolean;
i:integer;
begin
cds2.Create(nil);
cds2.FieldDefs.Add('czfpm',ftString, 30, False);
cds2.FieldDefs.Add('s_dwjc',ftInteger);
cds2.CreateDataSet;
cds2.Open;
cds2.EmptyDataSet;
with AdoQuery3 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from xt_ysdw where (s_sjczfpm=:fpm) order by s_czfpm';
parameters.ParamByName('fpm').Value:=ACZFPM;
Open;
end;
cds2.Append;
cds2.FieldByName('czfpm').AsString:='wf';
cds2.FieldByName('s_dwjc').AsString:='2';
cds2.Post;
AdoQuery3.First;
while not AdoQuery3.Eof do
begin
cds2.Append;
cds2.FieldByName('czfpm').AsString:=AdoQuery3.fieldbyname('s_czfpm').AsString;
cds2.FieldByName('s_dwjc').AsString:=AdoQuery3.fieldbyname('s_dwjc').AsString;
cds2.Post;
AdoQuery3.Next;
end; cds2.First;
while not cds2.Eof do
begin
with AdoQuery3 do
begin
Close;
SQL.Clear;
SQL.Text:='select * from xt_ysdw where (s_sjczfpm=:fpm) order by s_czfpm';
parameters.ParamByName('fpm').Value:=cds2.fieldbyname('czfpm').AsString;
Open;
end;
AdoQuery3.First;
vSTR:=cds2.FieldByName('czfpm').AsString;
while not AdoQuery3.Eof do
begin
cds2.Append;
cds2.FieldByName('czfpm').AsString:=AdoQuery3.fieldbyname('s_czfpm').AsString;
cds2.FieldByName('s_dwjc').AsString:=AdoQuery3.fieldbyname('s_dwjc').AsString;
cds2.Post;
AdoQuery3.Next;
end;
cds2.Locate('czfpm', VarArrayOf([vstr]), [loPartialKey]);
cds2.Next;
end;
cds2.Append;
cds2.FieldByName('czfpm').AsString:=ACZFPM;
cds2.FieldByName('s_dwjc').AsString:='1';
cds2.Post;
end;
代码如上,cds2为一TClientDataSet,为什么在多次调用这一过程后,cds2循环不了????
while not AdoQuery3.Eof do
begin
cds2.Append;
cds2.FieldByName('czfpm').AsString:=AdoQuery3.fieldbyname('s_czfpm').AsString;
cds2.FieldByName('s_dwjc').AsString:=AdoQuery3.fieldbyname('s_dwjc').AsString;
cds2.Post;
AdoQuery3.Next;...
cds2.Locate('czfpm', VarArrayOf([vstr]), [loPartialKey]);
cds2.Next;循环中你每次定位都到'czfpm' ([vstr])了