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

数据库 一对多删除,该如何解决

2013-01-26 
数据库 一对多删除CloseSQL.ClearSQL.Text : SELECT ID AS ID FROM Piece WHERE Produce + IntToSt

数据库 一对多删除


Close;
        SQL.Clear;
        SQL.Text := 'SELECT ID AS ID FROM Piece WHERE Produce =' + IntToStr(PID);
        Open;
        First;
        while not QryYS.Eof do       //只能执行一次 不能循环 
        begin
          PIID := FieldByName('ID').AsInteger;
          Next;
          if PIID > 0 then
          begin
            Close;
            SQL.Clear;
            SQL.Text := 'DELETE FROM Dosage WHERE Piece =' + IntToStr(PIID);
            ExecSQL;
          end;
        end;
[解决办法]
执行两个sql,要用两个query;
否则第二个执行sql语句,第一个就被动变成第二个的结果了
[解决办法]
原因分析:
  Close;
  SQL.Clear;
  SQL.Text := 'SELECT ID AS ID FROM Piece WHERE Produce =' + IntToStr(PID);
  Open;
  First;
  while not QryYS.Eof do //这里以未到记录尽头为条件进行循环
  begin
    PIID := FieldByName('ID').AsInteger;
    Next;
    if PIID > 0 then
    begin
      //像楼上朋友所说,这里应该使用另外一个数据集!!
      Close;
      SQL.Clear;
      SQL.Text := 'DELETE FROM Dosage WHERE Piece =' + IntToStr(PIID);
      ExecSQL;//这句没有记录返回,从而造成循环条件不再成立!
    end;
  end;

热点排行