Главная страница
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
3-1208506858
zorik
2008-04-18 12:20
2008.11.09
сортировка по varchar


2-1222926225
tytus
2008-10-02 09:43
2008.11.09
idFTP докачка файла + чтение из файла


2-1222522737
@!!ex
2008-09-27 17:38
2008.11.09
Помогите перевести с С


15-1221257388
Tirael
2008-09-13 02:09
2008.11.09
вирус


15-1221480224
MBo
2008-09-15 16:03
2008.11.09
Новые языковые возможности. Первые попытки...