Главная страница
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.011 c
4-1199910118
=BuckLr=
2008-01-09 23:21
2008.11.09
Bidi mode средствами API


2-1222885028
MZG
2008-10-01 22:17
2008.11.09
Получить свойства полей таблицы


3-1209101225
дучф_ч
2008-04-25 09:27
2008.11.09
при удалении полей таблицы ее размер не уменьшается


4-1199953927
slow!alfamoon!com
2008-01-10 11:32
2008.11.09
Определить производителя и модель материнской платы


15-1221304193
На паре
2008-09-13 15:09
2008.11.09
Как расположить эл-ты массива в обратном порядке?