Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.09;
Скачать: CL | DM;

Вниз

Неправильное удаление записи в БД   Найти похожие ветки 

 
электрослесарь ©   (2008-09-30 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 ©   (2008-09-30 20:45) [1]

1. в БД нет записей и никогда не было. и не будет
2. где здесь удаление? не разгляжу
3. где здесь выделенная запись? не видно
4. где здесь указывание на выделенную запись? не наблюдаю

ЗЫ
М.б. пора открыть букварь по программированию?


 
Anatoly Podgoretsky ©   (2008-09-30 20:59) [2]

Что за ерунда.


 
электрослесарь ©   (2008-09-30 21:14) [3]

Вообщем, я для себя понял причину неправильной работы. Как обновить записи в DBGrid не нажимая на выход из программы? Т.е. заново загрузить БД?


 
электрослесарь ©   (2008-09-30 22:04) [4]

Query1.Close;
 Query1.Open;
 Query1.Refresh;
Вот чего там нехватало


 
MsGuns ©   (2008-09-30 22:18) [5]

Эх, слесарю бы слесарево


 
Vlad Oshin ©   (2008-10-01 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 наверное так удаление происходило, фишка такая была, на уровне железа...



Страницы: 1 вся ветка

Текущий архив: 2008.11.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
15-1221473784
wayfarer
2008-09-15 14:16
2008.11.09
почему в mainmenu delphi for php 2.0 не выводятся русские символы


15-1221026764
oldman
2008-09-10 10:06
2008.11.09
Взлетит или не взлетит?


4-1199910118
=BuckLr=
2008-01-09 23:21
2008.11.09
Bidi mode средствами API


2-1222465968
SveTTT
2008-09-27 01:52
2008.11.09
Как избавиться от дублирования (SQL - full join)


2-1222860218
renex
2008-10-01 15:23
2008.11.09
не передается динамический массив в функцию