Здравствуйте.
Имеется БД, хранящая информацию о сотрудниках. На главной форме программы размещены следующие компоненты: 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));
end;
end;
И то, когда последняя запись удаляется, программа отображает её удаление только после выполнения других нажатий на кнопки. Подскажите пожалуйста, почему у меня не удаляется выбранная запись?
Спасибо!