Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];
ВнизНеправильное удаление записи в БД Найти похожие ветки
← →
электрослесарь © (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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c