首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

为何单步执行能成功,直接运行就提示无法更新,当前被锁定

2013-08-09 
为什么单步执行能成功,直接运行就提示无法更新,当前被锁定做了一个数据更新的窗体,用于从SQL数据库更新数

为什么单步执行能成功,直接运行就提示无法更新,当前被锁定
做了一个数据更新的窗体,用于从SQL数据库更新数据到ACCESS,运行时提示‘无法更新,当前被锁定’,但是我单步执行或者是设置几个断点,就能正常成功,麻烦各位帮忙看下,万分感谢!

procedure TF_sjtb.Button3Click(Sender: TObject);
  var
  sqlstr,yc,bd:string;
begin
  inherited;
  label2.Caption:='更新中,请稍候';
  screen.Cursor := crHourGlass;
  try

  //更新第一张表
  f_dm.ADOConnection1.Execute('DELETE FROM shangpin');
  with ADOQuery1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    sqlstr:='';
    sqlstr:='INSERT into shangpin SELECT * FROM [ODBC;Driver=SQL Server;Server=172.55.0.11;UID=sa;PWD=web361;database=shuju].shangpin' ;
    ADOQuery1.SQL.Add(sqlstr);
    ADOQuery1.Prepared;
    ADOQuery1.ExecSQL;
    ADOQuery1.Close;
  end;

  //第一张表数据比对
  ADOCommand1.CommandText:='select count(*) from shangpin';
  ADOCommand2.CommandText:='select count(*) from shangpin';
  yc:=VarToStr(ADOCommand1.Execute.Fields.Item[0].Value);
  bd:=VarToStr(ADOCommand1.Execute.Fields.Item[0].Value);
  if yc<>bd then
  begin
  label2.Caption:='商品信息更新失败,远程记录数'+yc+',本地记录数'+bd;
  showmessage('商品信息更新失败');
  Exit;
  end;

  //更新第二张表 
  f_dm.ADOConnection1.Execute('DELETE FROM GUIGE1');
  with ADOQuery1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    sqlstr:='';
    sqlstr:='INSERT into GUIGE1 SELECT * FROM [ODBC;Driver=SQL Server;Server=172.55.0.11;UID=sa;PWD=web361;database=shuju].GUIGE1' ;
    ADOQuery1.SQL.Add(sqlstr);
    ADOQuery1.Prepared;
    ADOQuery1.ExecSQL;
    ADOQuery1.Close;
  end;

  //第2张表数据比对
  ADOCommand1.CommandText:='select count(*) from GUIGE1';
  ADOCommand2.CommandText:='select count(*) from GUIGE1';
  yc:=VarToStr(ADOCommand1.Execute.Fields.Item[0].Value);
  bd:=VarToStr(ADOCommand1.Execute.Fields.Item[0].Value);
  if yc<>bd then
  begin
  label2.Caption:='颜色GUIGE1信息更新失败,远程记录数'+yc+',本地记录数'+bd;
  showmessage('颜色GUIGE1信息更新失败');


  Exit;
  end;

  //更新完成后
  ADOQuery1.Close;
  label2.Caption:='商品目录更新成功';
  showmessage('商品目录更新成功');
  except
  label2.Caption:='商品目录更新失败';
  showmessage('商品目录更新失败');
  end;
  screen.Cursor := crDefault ;
end;
[解决办法]
  f_dm.ADOConnection1.Execute('DELETE FROM shangpin'); //先注销这句再看看。  with ADOQuery1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    sqlstr:='';
    sqlstr:='INSERT into shangpin SELECT * FROM [ODBC;Driver=SQL Server;Server=172.55.0.11;UID=sa;PWD=web361;database=shuju].shangpin' ;
    ADOQuery1.SQL.Add(sqlstr);
    ADOQuery1.Prepared;
    ADOQuery1.ExecSQL;
    ADOQuery1.Close;
  end;


[解决办法]
更新一下jet驱动试试,应该是Access驱动的事

热点排行