Конференция "Начинающим" » Неправильное удаление записи в БД [D7, Paradox]
 
  • электрослесарь © (30.09.08 20:12) [0]
    Здравствуйте.
    Имеется БД, хранящая информацию о сотрудниках. На главной форме программы размещены следующие компоненты: Query, Table, DataSource и DBGrid. Программа работает на ура, только существует непонятный для меня момент...

    По нажатию на кнопке для сортировки записей в БД (вот код):

    procedure TForm1.Button6Click(Sender: TObject);
    begin
     Query1.DatabaseName :='ТемпБаза';
     Query1.SQL.Clear;
     Query1.SQL.Add('SELECT * FROM baza.DB ORDER BY tb');
     Query1.Active :=true;

     DataSource1.DataSet :=Query1;
     DBGrid1.DataSource :=DataSource1;
    end;


    происходит сортировка записей. Если же после выполнения этой процедуры нажать на кнопку удаления записи (вот код):
    procedure TForm1.Button3Click(Sender: TObject);
    begin
     Form1.Table1.Delete;   Form1.Table1.Active :=false;
     Form1.Table1.DatabaseName :='ТемпБаза';
     Form1.Table1.TableName :='deli.db';
       Form1.Table1.Active :=true;
       Form1.Table1.Insert;

         Form1.Table1.Fields[0].AsInteger  :=TabNumber;
         Form1.Table1.Fields[1].AsString   :=Family;
         Form1.Table1.Fields[2].AsString   :=Name;
         Form1.Table1.Fields[3].AsString   :=Otchestvo;
         Form1.Table1.Fields[4].AsString   :=Doljnost;
         Form1.Table1.Fields[5].AsString   :=Foto;
         Form1.Table1.Fields[6].AsDateTime :=StrToDate (DataVidachi);
         Form1.Table1.Fields[7].AsDateTime :=StrToDate (SrokDeistviya);
         Form1.Table1.Fields[8].AsInteger  :=VidPropuska;
        Form1.Table1.Post;

     Form1.Table1.Active :=false;
     Form1.Table1.DatabaseName :='ТемпБаза';
     Form1.Table1.TableName :='baza.db';
     Form1.Table1.Active :=true;
    end;


    выделенная запись не удаляется, а удаляется последняя запись в БД. Хотя процедура установки фокуса в сетке DBGrid указывает на выделенную запись. Вот код установки на нужную запись:
    procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
    begin
     if DBGrid1.Focused = true then begin
      TabNumber :=     DataSource1.DataSet.Fields[0].AsInteger;
      Family :=        DataSource1.DataSet.Fields[1].AsString;
      Name :=          DataSource1.DataSet.Fields[2].AsString;
      Otchestvo :=     DataSource1.DataSet.Fields[3].AsString;
      Doljnost :=      DataSource1.DataSet.Fields[4].AsString;
      Foto :=          DataSource1.DataSet.Fields[5].AsString;
      DataVidachi :=   DataSource1.DataSet.Fields[6].AsString;
      SrokDeistviya := DataSource1.DataSet.Fields[7].AsString;
      VidPropuska :=   DataSource1.DataSet.Fields[8].AsInteger;

      ShowMessage (IntToStr (TabNumber));
      //тут в переменной TabNomer сохраняется нужное мне значение  

     end;
    end;


    И то, когда последняя запись удаляется, программа отображает её удаление только после выполнения других нажатий на кнопки. Подскажите пожалуйста, почему у меня не удаляется выбранная запись?
    Спасибо!
  • Johnmen © (30.09.08 20:45) [1]
    1. в БД нет записей и никогда не было. и не будет
    2. где здесь удаление? не разгляжу
    3. где здесь выделенная запись? не видно
    4. где здесь указывание на выделенную запись? не наблюдаю

    ЗЫ
    М.б. пора открыть букварь по программированию?
  • Anatoly Podgoretsky © (30.09.08 20:59) [2]
    Что за ерунда.
  • электрослесарь © (30.09.08 21:14) [3]
    Вообщем, я для себя понял причину неправильной работы. Как обновить записи в DBGrid не нажимая на выход из программы? Т.е. заново загрузить БД?
  • электрослесарь © (30.09.08 22:04) [4]
    Query1.Close;
     Query1.Open;
     Query1.Refresh;
    Вот чего там нехватало
  • MsGuns © (30.09.08 22:18) [5]
    Эх, слесарю бы слесарево
  • Vlad Oshin © (01.10.08 09:26) [6]

    > нажать на кнопку удаления записи (вот код):
    > procedure TForm1.Button3Click(Sender: TObject);
    > begin
    >  Form1.Table1.Delete;   Form1.Table1.Active :=false;
    >  Form1.Table1.DatabaseName :='ТемпБаза';
    >  Form1.Table1.TableName :='deli.db';
    >    Form1.Table1.Active :=true;
    >    Form1.Table1.Insert;


    > 30.09.08 20:12 наверное так удаление происходило, фишка такая была, на уровне железа...
 
Конференция "Начинающим" » Неправильное удаление записи в БД [D7, Paradox]
Есть новые Нет новых   [134474   +35][b:0][p:0.002]