我用Delphi 7做了个程序,数据库为Access2003 ,现象如下:显示“修改成功”但实际未必能成功修改;修改成功后有时“修改成功”提示框不弹出;修改时需要等待30秒以上才能看出是否修改成功。代码如下:
    try
      with adoquery do
      begin
        close;
        sql.Clear;
        sql.Add('update zccsedit1 set 修程=:xc,轴承型号=:zcxh,制造厂=:zzc,制造日期=:zzrq,年号=:nh');
        sql.Add('Where 轴承编号=:zcbh');
        Parameters.ParamByName('xc').Value:=trim(ComboBox4.Text);
        Parameters.ParamByName('zcxh').Value:=trim(ComboBox1.Text);
        if(ComboBox4.Text='新造')then
        begin
          Parameters.ParamByName('zzc').Value:=trim(ComboBox5.Text);
          Parameters.ParamByName('zzrq').Value:=trim(Edit9.Text);
        end;
        if(ComboBox4.Text='大修')then
        begin
          Parameters.ParamByName('zzc').Value:=trim(ComboBox6.Text);
          Parameters.ParamByName('zzrq').Value:=trim(Edit10.Text);
        end;
        Parameters.ParamByName('nh').Value:=trim(Edit8.Text);
        Parameters.ParamByName('zcbh').Value:=trim(Edit1.Text);        execsql;
        zccpbj.Statusbar1.Panels[2].Text:='基本信息修改成功';
      end;
      except
        zccpbj.Statusbar1.Panels[2].Text:='基本信息修改失败';
      end;
      with adoquery do
      begin
        close;
        sql.Clear;
        sql.Add('select * from zccsedit1');
        open;
      end;

解决方案 »

  1.   

    try
          with adoquery do
          begin
            close;
            sql.Clear;
            sql.Add('update zccsedit1 set 修程=:xc,轴承型号=:zcxh,制造厂=:zzc,制造日期=:zzrq,年号=:nh');
            sql.Add(' Where 轴承编号=:zcbh'); //注意where前应该有一个空格
            Parameters.ParamByName('xc').Value:=trim(ComboBox4.Text);
            Parameters.ParamByName('zcxh').Value:=trim(ComboBox1.Text);
            if(ComboBox4.Text='新造')then
            begin
              Parameters.ParamByName('zzc').Value:=trim(ComboBox5.Text);
              Parameters.ParamByName('zzrq').Value:=trim(Edit9.Text);
            end else //这里加入else,否则有可能xc参数没有赋值的问题产生
            if(ComboBox4.Text='大修')then
            begin
              Parameters.ParamByName('zzc').Value:=trim(ComboBox6.Text);
              Parameters.ParamByName('zzrq').Value:=trim(Edit10.Text);
            end;
            Parameters.ParamByName('nh').Value:=trim(Edit8.Text);
            Parameters.ParamByName('zcbh').Value:=trim(Edit1.Text);        execsql;
            zccpbj.Statusbar1.Panels[2].Text:='基本信息修改成功';
          end;
          except
            zccpbj.Statusbar1.Panels[2].Text:='基本信息修改失败';
          end;
          with adoquery do
          begin
            close;
            sql.Clear;
            sql.Add('select * from zccsedit1');
            open;
          end; 
      

  2.   

    try
          with adoquery do
          begin
            close;
            sql.Clear;
            sql.Add('update zccsedit1 set 修程=:xc,轴承型号=:zcxh,制造厂=:zzc,制造日期=:zzrq,年号=:nh');
            sql.Add(' Where 轴承编号=:zcbh'); //注意where前应该有一个空格
            Parameters.ParamByName('xc').Value:=trim(ComboBox4.Text);
            Parameters.ParamByName('zcxh').Value:=trim(ComboBox1.Text);
            if(ComboBox4.Text='新造')then
            begin
              Parameters.ParamByName('zzc').Value:=trim(ComboBox5.Text);
              Parameters.ParamByName('zzrq').Value:=trim(Edit9.Text);
            end else //这里加入else,否则有可能xc参数没有赋值的问题产生
            if(ComboBox4.Text='大修')then
            begin
              Parameters.ParamByName('zzc').Value:=trim(ComboBox6.Text);
              Parameters.ParamByName('zzrq').Value:=trim(Edit10.Text);
            end;
            Parameters.ParamByName('nh').Value:=trim(Edit8.Text);
            Parameters.ParamByName('zcbh').Value:=trim(Edit1.Text);        execsql;
            zccpbj.Statusbar1.Panels[2].Text:='基本信息修改成功';
          end;
          except
            zccpbj.Statusbar1.Panels[2].Text:='基本信息修改失败';
          end;
          with adoquery do
          begin
            close;
            sql.Clear;
            sql.Add('select * from zccsedit1');
            open;
          end; 
      

  3.   

    try
          with adoquery do
          begin
            close;
            sql.Clear;
            sql.Add('update zccsedit1 set 修程=:xc,轴承型号=:zcxh,制造厂=:zzc,制造日期=:zzrq,年号=:nh');
            sql.Add(' Where 轴承编号=:zcbh'); //注意where前应该有一个空格
            Parameters.ParamByName('xc').Value:=trim(ComboBox4.Text);
            Parameters.ParamByName('zcxh').Value:=trim(ComboBox1.Text);
            if(ComboBox4.Text='新造')then
            begin
              Parameters.ParamByName('zzc').Value:=trim(ComboBox5.Text);
              Parameters.ParamByName('zzrq').Value:=trim(Edit9.Text);
            end else //这里加入else,否则有可能xc参数没有赋值的问题产生
            if(ComboBox4.Text='大修')then
            begin
              Parameters.ParamByName('zzc').Value:=trim(ComboBox6.Text);
              Parameters.ParamByName('zzrq').Value:=trim(Edit10.Text);
            end;
            Parameters.ParamByName('nh').Value:=trim(Edit8.Text);
            Parameters.ParamByName('zcbh').Value:=trim(Edit1.Text);        execsql;
            zccpbj.Statusbar1.Panels[2].Text:='基本信息修改成功';
          end;
          except
            zccpbj.Statusbar1.Panels[2].Text:='基本信息修改失败';
          end;
          with adoquery do
          begin
            close;
            sql.Clear;
            sql.Add('select * from zccsedit1');
            open;
          end; 
      

  4.   

    1、首先这么一段代码不可能程序花30秒去执行,如果发生这样的情况就有可能是你数据库连接不正确或者是SQL服务管理器没有开始等等,总之先检查一下数据库连接。
    2、楼上这位高人修改的这两个地方比较好。
      

  5.   

    1、从代码看没有提示框出现,表示没有执行完。数据库文件是否被独占打开?
    2、Access的数据更新结果是可能会有延迟,但不可能达到30秒