with QueryTemp do
begin
SQL.Clear;
SQL.Add('SELECT distinct B.SPCODE,B.NAME SP_NAME,C.BL YHQLXBL FROM SPXX B,YHQLXBL C');
SQL.Add('WHERE B.DEPTID=C.DEPTID') ;
SQL.Add('AND C.DEPTID = :pCode');
SQL.Add('AT ISOLATION READ UNCOMMITTED');
ParamByName('pCode').AsString :=SelCode2.SelectCode;
open;
end;
if QueryTemp.RecordCount>0 then
begin
with TableYQXEITEM do
begin
QueryTemp.First;
while not QueryTemp.Eof do
begin TableYQXEITEM.Append;
TableYQXEITEM.FieldByName('SPCODE').AsString := QueryTemp.fieldbyname('SPCODE').AsString;
TableYQXEITEM.FieldByName('SP_NAME').AsString := QueryTemp.fieldbyname('SP_NAME').asstring ;
TableYQXEITEM.FieldByName('YHQLXBL').AsFloat := QueryTemp.fieldbyname('YHQLXBL').AsFloat; TableYQXEITEM.Post;
QueryTemp.Next;
end;
end; end;帮我看看我的代码。。每次执行很慢。。看有什么好办法块点 麻烦高手修改一下
begin
SQL.Clear;
SQL.Add('SELECT distinct B.SPCODE,B.NAME SP_NAME,C.BL YHQLXBL FROM SPXX B,YHQLXBL C');
SQL.Add('WHERE B.DEPTID=C.DEPTID') ;
SQL.Add('AND C.DEPTID = :pCode');
SQL.Add('AT ISOLATION READ UNCOMMITTED');
ParamByName('pCode').AsString :=SelCode2.SelectCode;
open;
end;
if QueryTemp.RecordCount>0 then
begin
with TableYQXEITEM do
begin
QueryTemp.First;
while not QueryTemp.Eof do
begin TableYQXEITEM.Append;
TableYQXEITEM.FieldByName('SPCODE').AsString := QueryTemp.fieldbyname('SPCODE').AsString;
TableYQXEITEM.FieldByName('SP_NAME').AsString := QueryTemp.fieldbyname('SP_NAME').asstring ;
TableYQXEITEM.FieldByName('YHQLXBL').AsFloat := QueryTemp.fieldbyname('YHQLXBL').AsFloat; TableYQXEITEM.Post;
QueryTemp.Next;
end;
end; end;帮我看看我的代码。。每次执行很慢。。看有什么好办法块点 麻烦高手修改一下
数据比较打。显示很慢
SQL.Add('SELECT distinct B.SPCODE,B.NAME SP_NAME,C.BL YHQLXBL FROM SPXX B,YHQLXBL C');
SQL.Add('WHERE B.DEPTID=C.DEPTID') ;
SQL.Add('AND C.DEPTID = :pCode');
SQL.Add('AT ISOLATION READ UNCOMMITTED');
...
执行后把 TableYQXEITEM 更新下
这样应该比循环插入要快
而且你的 distinct ,数据量大的话很吃资源,SQL语句上再优化下吧。
用sql 语句插入数据多快啊。
procedure TForm1.Button2Click(Sender: TObject);
var
vSQL: string;
begin
vSQL := 楼上上的SQL语句
with QueryTemp do
begin
Close;
SQL.Clear;
SQL.Text := vSQL;
ExecSQL;
end;
end;
begin
ADOConnection1.Execute('SQL语句');
{TableYQXEITEM.close;
TableYQXEITEM.open; 刷新}
end;