Вниз
Скачать: 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.007 c
2-1222845582
Armond
2008-10-01 11:19
2008.11.09
Поиск в гриде


2-1222885420
Потокер
2008-10-01 22:23
2008.11.09
вызов метода в Thread


2-1222876480
GrieVeR-13
2008-10-01 19:54
2008.11.09
Эмуляция клика мыши в не активном окне.


2-1222918980
chezanah
2008-10-02 07:43
2008.11.09
opc клиент


2-1220340044
Wolferio
2008-09-02 11:20
2008.11.09
DownloadFile (Кеширует при повторном обновлении)




   Наверх