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;帮我看看我的代码。。每次执行很慢。。看有什么好办法块点  麻烦高手修改一下

解决方案 »

  1.   

    就是先通过QueryTemp  查询几个字段   然后通过循环奖值传给TableYQXEITEMTableYQXEITEM绑定在DAGAGRID上边
    数据比较打。显示很慢
      

  2.   

    直接用一个sql语句查询插入TableYQXEITEM对应的表里sql.add('insert into 表名(SPCODE,SP_NAME,YHQLXBL)');
    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 更新下
    这样应该比循环插入要快
      

  3.   

    SPXX B,YHQLXBL C 左边放大的表,右边放小表,各表以及相关表对重要字段做索引
    而且你的 distinct ,数据量大的话很吃资源,SQL语句上再优化下吧。
      

  4.   

    insert into 表名(字段) values('你那条查询语句')
    用sql 语句插入数据多快啊。
      

  5.   

    简单方法就是楼上的方法
    procedure TForm1.Button2Click(Sender: TObject);
    var
      vSQL: string;
    begin
      vSQL := 楼上上的SQL语句
      with QueryTemp do
      begin
        Close;
        SQL.Clear;
        SQL.Text := vSQL;
        ExecSQL;
      end;
    end;
      

  6.   

    SQL语句:参照4楼仁兄的procedure TForm1.Button1Click(Sender: TObject);
    begin
       ADOConnection1.Execute('SQL语句');
      {TableYQXEITEM.close;
      TableYQXEITEM.open;  刷新}
    end;