if Edit1.Text=Label39.Text then
       begin
       if Edit4.Text=Label40.Text then
        begin
      CheckBox1.isChecked:=False;
      if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'')
    and  (CalendarEdit1.Text<>'') and  (Edit4.Text<>'') and (Length(Edit1.Text) < 11)
    and (Length(Edit1.Text) >5) then
   begin
     ADOQuery1.fieldbyname('a').asstring:=Trim(Edit1.text); 
     ADOQuery1.fieldbyname('b').asstring:=Trim(CalendarEdit1.text); 
     ADOQuery1.fieldbyname('c').asstring:=Trim(Edit3.text);
     ADOQuery1.fieldbyname('d').asstring:=Trim(Edit2.text);
     ADOQuery1.fieldbyname('e').asstring:=Trim(label40.text);
     ADOQuery1.fieldbyname('f').asstring:=Trim(ComboEdit1.text);
     ADOQuery1.fieldbyname('g').asstring:=Trim(ComboEdit4.text);
     ADOQuery1.fieldbyname('h').asstring:=Trim(Edit5.text);
     ADOQuery1.fieldbyname('i').asstring:=Trim(Edit6.text);
     ADOQuery1.fieldbyname('j').asstring:=Trim(Edit7.text);
     ADOQuery1.fieldbyname('k').asstring:=Trim(Edit8.text);
     ADOQuery1.fieldbyname('l').asstring:=Trim(Edit9.text);
     ADOQuery1.fieldbyname('m').asstring:=Trim(Edit10.text);
     ADOQuery1.fieldbyname('n').asstring:=Trim(Edit11.text);
     ADOQuery1.fieldbyname('o').asstring:=Trim(Edit12.text);
     ADOQuery1.fieldbyname('p').asstring:=Trim(Edit13.text);
     ADOQuery1.fieldbyname('q').asstring:=Trim(Edit14.text);
     ADOQuery1.fieldbyname('r').asstring:=Trim(Edit15.text);
     ADOQuery1.fieldbyname('s').asstring:=Trim(Edit16.text);
     ADOQuery1.fieldbyname('t').asstring:=Trim(Edit17.text);
     ADOQuery1.fieldbyname('u').asstring:=Trim(Edit18.text);
     ADOQuery1.fieldbyname('v').asstring:=Trim(Edit19.text);
     ADOQuery1.fieldbyname('w').asstring:=Trim(Edit20.text);
     ADOQuery1.fieldbyname('x').asstring:=Trim(Edit21.text);
     ADOQuery1.fieldbyname('y').asstring:=Trim(Edit22.text);
     ADOQuery1.fieldbyname('z').asstring:=Trim(Edit23.text);
     ADOQuery1.fieldbyname('aa').asstring:=Trim(Edit24.text);
     ADOQuery1.fieldbyname('bb').asstring:=Trim(Edit25.text);
     ADOQuery1.fieldbyname('cc').asstring:=Trim(Edit26.text);
     ADOQuery1.fieldbyname('dd').asstring:=Trim(ComboEdit2.text);
     ADOQuery1.fieldbyname('ee').asstring:=Trim(Form3.Edit1.text); 
     ADOQuery1.Post;

解决方案 »

  1.   

    你是Insert,还是Edit?什么数据库,表中有多少记录?
      

  2.   

    上面的语句应该问题不大
     ADOQuery1.Edit;//或Insert
       .......
     ADOQuery1.Post;//应与上面的配对出现应该还是你数据库速度慢。设置好数据排序、索引,设置唯一ID,同时ADOQuery1打开的数据不要太多。
      

  3.   

    在数据库执行insert需要多久
      

  4.   

    access数据库,数据库是空的无数据。
      

  5.   

    插入 开始前 记得 数据库控件 要 disableControl
      

  6.   

    ADOQuery1.Post建议不要用了,用SQL语句更新才是王道。
    比如'insert into tablename (a,b,c) values(...)'
      

  7.   

    可以把你的右边值都先存入一个临时array[0..i] of String 左边用 ADOQuery1.field[i].asstring,用for 逐个赋值。trim 其实也是函数,在数据库操作时应该也占时间的。
    另外把你的那么多IF 判断都写在 ADOQuery1.Edit或Insert 前面,不要在数据操作时判断,最好在操作前判断。这些都占执行时间的。
      

  8.   

    直接 用SQL语句去操作, INSERT INTO 
     ADOQuery1.fieldbyname('a').asstring:=Trim(Edit1.text);  此句相当于将数据库的里面的记录找了遍,然后返回有效的字段的指针。详见 DB  这个 UNIT
    //代码是DB单元中4172行,
    function TFields.FindField(const FieldName: string): TField;
    var
      I: Integer;
      HashValue: Cardinal;
    begin
      if FList.Count > 0 then
      begin
        HashValue := TNamedItem.HashName(FieldName);
        for I := 0 to FList.Count - 1 do
        begin
          Result := FList.Items[I];
          if (Result.FFieldNameHashValue = HashValue) and
             (AnsiCompareText(Result.FFieldName, FieldName) = 0) then
            Exit;
        end;
      end;
      Result := nil;
    end;