Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.006 c
3-1209121091
Int23
2008-04-25 14:58
2008.11.09
Как вызвать окно выдора доступных MS SQL Server ов


2-1222754944
Agrh
2008-09-30 10:09
2008.11.09
Как определить что сетевой принтер включен?


15-1221220415
Правильный$Вася
2008-09-12 15:53
2008.11.09
пластиковая пулеметная лента во время 2 мировой


6-1195190006
Сергей Колесник
2007-11-16 08:13
2008.11.09
Пример работы с WinPCap на дельфях


2-1222699729
<Evil>
2008-09-29 18:48
2008.11.09
Как скрыть колонку в DBGrid ?




   Наверх