with ADOQuerySel do
  begin
    while not Eof do
    begin
       //数据库插入操作
       strId:=ADOQuerySel.Fields[0].AsString;
       strService_Name:=ADOQuerySel.Fields[1].AsString;
       strSerivice_id:=ADOQuerySel.Fields[2].AsString;
       strDealtag:='0';       strTime:=FormatDateTime('yyyy-mm-dd hh:mm:ss',now);
       strInsert:='insert into t_out_from_web(Dest_Terminal_Id,Fee_Terminal_Id,Service_Id,Msg_Content,Service_No,Dealtag,SendTime)'
         +'values('''+strId+''','''+strId+''','''+strSerivice_id+''','''+strMsg+''','''+strService_No+''','''+strDealtag+''','''+strTime+''')';       ADOQueryIns.Close;
       ADOQueryIns.SQL.Clear;
       ADOQueryIns.SQL.Add(strInsert);
       ADOQueryIns.ExecSQL;
       Next;
    end;
  end;
--------运行时占用系统资源非常严重!不知道怎样处理,运行时,连最小化都不行,在程序运行时点击下界面,就会在标题栏上显示“没有响应”,但后台的数据插入仍能进行,请各路大虾们给个优化的建议,有代码最好了!谢先!

解决方案 »

  1.   

    在循环里加句application.ProcessMessages;试试
      

  2.   

    在while里面加上  Application.ProcessMessages
      

  3.   

    运行速度慢,有可能是程序的问题,数据库的问题,通讯的问题,甚至有可能是硬件配置的问题。这个不好说。看你上面的代码,问题不能算太大。不过建议如下:
    在大批量录入数据时,有可能的话尽量使用批处理的方式
    在循环录入数据时,如果是本地数据库,用adotable,不要用adoquery,并且在进行数据录入操作时,使用ADOTable1.DisableControls;数据录入完成后ADOTable1.EnableControls,query也一样