Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Update которого быть не должно


Автор: Алкоголик 26.4.2012, 08:58
Здравствуйте.
По таблице в БД произошел update без условия(т.е. все данные стали одинаковые).

Код

procedure TForm1.AllAddBase(NM:string);
var
i,numId:integer;
begin
  case tag of
  1: begin
    IdAll:=GetDataI('SELECT MAX(id) FROM zakaz')+1;
    ibquery2.Close;
    ibquery2.SQL.Clear;
    ibquery2.SQL.Add('INSERT INTO ZAKAZ (ID, NOMER, IDON, IDONA, Vremy, OTONFAM,');
    ibquery2.SQL.Add('OTONNAME, OTONOTCH, OTONAFAM, OTONANAME, OTONAOTCH,');
    ibquery2.SQL.Add('ONFAPPOSLE, ONAFAMPOSLE, SAGS, SDATE, STIME, STATUS');
    if Telefon.Text<>'' then
      ibquery2.SQL.Add(',TELEFON');
    if OnaTelefon.Text<>'' then
      ibquery2.SQL.Add(',ONATELEFON');
    if EMAIL.Text<>'' then
      ibquery2.SQL.Add(',EMAIL');
    ibquery2.SQL.Add(',RASCHET, Ceremon, SUMMA');
    if RzRadioButton2.Checked then
      ibquery2.SQL.Add(',DATAPOKV, FAMILPOKV')
    else
      ibquery2.SQL.Add(',NOMERKV');
    ibquery2.SQL.Add(')');
    ibquery2.SQL.Add('VALUES ('+#39+IntTOStr(IDALL)+#39+', '+#39+NM+#39+', ');
    ibquery2.SQL.Add(#39+IntToStr(Idon)+#39+', '+#39+IntToStr(IdONA)+#39+', ');
    ibquery2.SQL.Add(#39+FormatDateTime('dd.mm.yyyy',Now)+#39+', ');
    ibquery2.SQL.Add(#39+OnFamSags.Text+#39+', '+#39+OnNamSags.Text+#39+', ');
    ibquery2.SQL.Add(#39+OnOtchSags.Text+#39+', '+#39+OnaFamSags.Text+#39+', ');
    ibquery2.SQL.Add(#39+OnaNameSags.Text+#39+', '+#39+OnaOtchSags.Text+#39+', ');
    ibquery2.SQL.Add(#39+OnNewFam.Text+#39+', '+#39+OnaNewFam.Text+#39+', ');
    ibquery2.SQL.Add(#39+IntToStr(Sags.ItemIndex+1)+#39+', '+#39+FormatDateTime('dd.mm.yyyy',RegistrDate.date)+#39+', ');
    ibquery2.SQL.Add(#39+FormatDateTime('hh:nn',RegistrTime.Time)+#39+', '+#39+'0'+#39);
    if Telefon.Text<>'' then
      ibquery2.SQL.Add(', '+#39+Telefon.text+#39);
    if OnaTelefon.Text<>'' then
      ibquery2.SQL.Add(', '+#39+OnaTelefon.text+#39);
    if EMAIL.Text<>'' then
      ibquery2.SQL.Add(', '+#39+EMAIL.text+#39);
    if RzRadioButton1.Checked then
      ibquery2.SQL.Add(','+#39+'0'+#39)
    else
      ibquery2.SQL.Add(','+#39+'1'+#39);
     NumId:=Integer(ceremoniy.Items.Objects[ceremoniy.ItemIndex]);
    ibquery2.SQL.Add(', '+#39+IntToStr(NumID)+#39);
    ibquery2.SQL.Add(', '+#39+Summa.Text+#39);
    if RzRadioButton2.Checked then
      ibquery2.SQL.Add(','+#39+FormatDateTime('dd.mm.yyyy',besnalDate.date)+#39+', '+#39+FamilPoKv.Text+#39)
    else
      ibquery2.SQL.Add(','+#39+NOMERKv.Text+#39);
    ibquery2.SQL.Add(')');
  end;
  0:begin
    ibquery2.Close;
    ibquery2.SQL.Clear;
    ibquery2.SQL.Add('update zakaz set ');
    ibquery2.SQL.Add('OTONFAM='+#39+OnFamSags.Text+#39);
    ibquery2.SQL.Add(',OTONNAME='+#39+OnNamSags.Text+#39);
    ibquery2.SQL.Add(',OTONOTCH='+#39+OnOtchSags.Text+#39);
    ibquery2.SQL.Add(',OTONAFAM='+#39+OnaFamSags.Text+#39);
    ibquery2.SQL.Add(',OTONANAME='+#39+OnaNameSags.Text+#39);
    ibquery2.SQL.Add(',OTONAOTCH='+#39+OnaOtchSags.Text+#39);
    ibquery2.SQL.Add(',ONFAPPOSLE='+#39+OnNewFam.Text+#39);
    ibquery2.SQL.Add(',ONAFAMPOSLE='+#39+OnaNewFam.Text+#39);
    ibquery2.SQL.Add(',SAGS='+#39+IntToStr(Sags.ItemIndex+1)+#39);
    ibquery2.SQL.Add(',SDATE='+#39+FormatDateTime('dd.mm.yyyy',RegistrDate.date)+#39);
    ibquery2.SQL.Add(',STIME='+#39+FormatDateTime('hh:nn',RegistrTime.Time)+#39);

    if Telefon.Text<>'' then
      ibquery2.SQL.Add(', TELEFON='+#39+Telefon.text+#39);
    if OnaTelefon.Text<>'' then
      ibquery2.SQL.Add(', ONATELEFON='+#39+OnaTelefon.text+#39);
    if EMAIL.Text<>'' then
      ibquery2.SQL.Add(', EMAIL='+#39+EMAIL.text+#39);
    if RzRadioButton1.Checked then
      ibquery2.SQL.Add(',RASCHET='+#39+'0'+#39)
    else
      ibquery2.SQL.Add(',RASCHET='+#39+'1'+#39);
    NumId:=Integer(ceremoniy.Items.Objects[ceremoniy.ItemIndex]);
    ibquery2.SQL.Add(', CEREMON='+#39+IntToStr(NumID)+#39);
    ibquery2.SQL.Add(', SUMMA='+#39+Summa.Text+#39);
    if RzRadioButton2.Checked then
      begin
        ibquery2.SQL.Add(',DATAPOKV='+#39+FormatDateTime('dd.mm.yyyy',besnalDate.date)+#39);
        ibquery2.SQL.Add(', FAMILPOKV='+#39+FamilPoKv.Text+#39);
      end
    else
      ibquery2.SQL.Add(',NOMERKV='+#39+NOMERKv.Text+#39);
    ibquery2.SQL.Add(' where id='+#39+IntToStr(Form2.GlobalID)+#39);
  end;
  2:
    begin
      ibquery2.Close;
      ibquery2.SQL.Clear;
      ibquery2.SQL.Add('update zakaz set ');
      ibquery2.SQL.Add('OTONFAM='+#39+OnFamSags.Text+#39);
      ibquery2.SQL.Add(',OTONNAME='+#39+OnNamSags.Text+#39);
      ibquery2.SQL.Add(',OTONOTCH='+#39+OnOtchSags.Text+#39);
      ibquery2.SQL.Add(',OTONAFAM='+#39+OnaFamSags.Text+#39);
      ibquery2.SQL.Add(',OTONANAME='+#39+OnaNameSags.Text+#39);
      ibquery2.SQL.Add(',OTONAOTCH='+#39+OnaOtchSags.Text+#39);
      ibquery2.SQL.Add(',ONFAPPOSLE='+#39+OnNewFam.Text+#39);
      ibquery2.SQL.Add(',ONAFAMPOSLE='+#39+OnaNewFam.Text+#39);
      ibquery2.SQL.Add(',SAGS='+#39+IntToStr(Sags.ItemIndex+1)+#39);
      ibquery2.SQL.Add(',SDATE='+#39+FormatDateTime('dd.mm.yyyy',RegistrDate.date)+#39);
      ibquery2.SQL.Add(',STIME='+#39+FormatDateTime('hh:nn',RegistrTime.Time)+#39);
      if Telefon.Text<>'' then
        ibquery2.SQL.Add(', TELEFON='+#39+Telefon.text+#39);
      if OnaTelefon.Text<>'' then
        ibquery2.SQL.Add(', ONATELEFON='+#39+OnaTelefon.text+#39);
      if EMAIL.Text<>'' then
        ibquery2.SQL.Add(', EMAIL='+#39+EMAIL.text+#39);
      if RzRadioButton1.Checked then
        ibquery2.SQL.Add(',RASCHET='+#39+'0'+#39)
      else
        ibquery2.SQL.Add(',RASCHET='+#39+'1'+#39);
      NumId:=Integer(ceremoniy.Items.Objects[ceremoniy.ItemIndex]);
      ibquery2.SQL.Add(', CEREMON='+#39+IntToStr(NumID)+#39);
      ibquery2.SQL.Add(', SUMMA='+#39+Summa.Text+#39);
      if RzRadioButton2.Checked then
        begin
          ibquery2.SQL.Add(',DATAPOKV='+#39+FormatDateTime('dd.mm.yyyy',besnalDate.date)+#39);
          ibquery2.SQL.Add(', FAMILPOKV='+#39+FamilPoKv.Text+#39);
        end
      else
        ibquery2.SQL.Add(',NOMERKV='+#39+NOMERKv.Text+#39);
      NumId:=Integer(CbComment.Items.Objects[CbComment.ItemIndex]);
      ibquery2.SQL.Add(', DPSUMMA='+#39+DPSumma.Text+#39);
      ibquery2.SQL.Add(', DPNOMER='+#39+DPNumKvit.Text+#39);
      ibquery2.SQL.Add(', DPKOMMENT='+#39+IntToStr(NumID)+#39);
      ibquery2.SQL.Add(', DPDATE='+#39+FormatDateTime('dd.mm.yyyy',Now)+#39);
      ibquery2.SQL.Add(' where id='+#39+IntToStr(Form2.GlobalID)+#39);
    end;
  end;
  try
  ibquery2.ExecSQL;
  ibquery2.Transaction.Commit;
  except
    Application. MessageBox('Произошла ошибка при записи данных в БД!','Предупреждение',MB_OK);
  end;
end;


Произойти это могло только здесь, больше update к этой таблице нет. Не могу понять почему и как такое могло случится...
База  на firebird. Помогите разобраться.

Автор: Vas 2.5.2012, 07:40
Делай
Код

ShowMessage(ibquery2.SQL.Text);
 
чтобы проверить, правильно ли условие в запросе выполняется и смотри. Никто твой код запускать у себя не собирается 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)