while not qy1.eof do begin ... qy1.next; end; 是循环全部的记录,怎样循环选中的记录。
以下代码是选中DBGrideh中的几行数据点击右键进行下载的代码,但这样的话是连续下载所选行数的次数的光标所在行的值,其它行的值无法下载,大家看看有什么办法?也就是只能下载黑三角所在的那一行。 procedure Tcxsjsp.N7Click(Sender: TObject); var str,stra:Tmemorystream; i,i1:integer; begin for i1:=0 to DBGrideh1.SelectedRows.Count-1 do begin str:=Tmemorystream.Create; str.Position:=0; stra:=Tmemorystream.Create; stra.Position:=0; Tblobfield(qy1.FieldByName('wjnr')).savetostream(str); Tblobfield(qy1.FieldByName('wjnr1')).savetostream(stra); for i:=0 to DBGridEh1.Columns.Count-1 do begin if dbgrideh1.columns[i].fieldname='sjwj' then begin savedialog1.filename:=qy1.fieldbyname('sjwj').asstring; if SaveDialog1.Execute then str.SaveToFile(savedialog1.filename); end; if (dbgrideh1.columns[i].fieldname='sjwj1') and (qy1.fieldbyname('sjwj1').asstring<>'') then begin savedialog1.filename:=qy1.fieldbyname('sjwj1').asstring; if SaveDialog1.Execute then stra.SaveToFile(savedialog1.filename); end; end; str.Free; stra.Free; end; end;
begin
...
qy1.next;
end;
是循环全部的记录,怎样循环选中的记录。
procedure Tcxsjsp.N7Click(Sender: TObject);
var str,stra:Tmemorystream;
i,i1:integer;
begin
for i1:=0 to DBGrideh1.SelectedRows.Count-1 do
begin
str:=Tmemorystream.Create;
str.Position:=0;
stra:=Tmemorystream.Create;
stra.Position:=0;
Tblobfield(qy1.FieldByName('wjnr')).savetostream(str);
Tblobfield(qy1.FieldByName('wjnr1')).savetostream(stra);
for i:=0 to DBGridEh1.Columns.Count-1 do
begin
if dbgrideh1.columns[i].fieldname='sjwj' then
begin
savedialog1.filename:=qy1.fieldbyname('sjwj').asstring;
if SaveDialog1.Execute then
str.SaveToFile(savedialog1.filename);
end;
if (dbgrideh1.columns[i].fieldname='sjwj1') and (qy1.fieldbyname('sjwj1').asstring<>'') then
begin
savedialog1.filename:=qy1.fieldbyname('sjwj1').asstring;
if SaveDialog1.Execute then
stra.SaveToFile(savedialog1.filename);
end;
end;
str.Free;
stra.Free;
end;
end;