![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Доброго времени суток!
Задали на самостоятельное изучение тему "Как с помощью программы Delphi добавлять, удалять и редактировать записи в таблице Access". Написала программу, следуя указаниям методички, она должна соответственно добавлять, удалять и редактировать записи. Но возникло 2 проблемы: - Программа не редактирует записи, только удаляет и добавляет нормально - После нажатия кнопок "Добавить" или "Удалить" DBGrid1 на форме очищается, а этого быть не должно, нужно чтобы добавленные/удалённые/изменённые записи сразу же отображались на DBGrid1, без перезапуска программы. вот код: Код:
unit LAB3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls; type TForm1 = class(TForm) ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DataSource1: TDataSource; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; DBGrid1: TDBGrid; Button2: TButton; Button3: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure Button1Click(Sender: TObject); procedure DBGrid1CellClick(Column: TColumn); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; X: integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); {Добавление записей} begin ADOQuery1.Active:=false; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('INSERT INTO Таблица1'); ADOQuery1.SQL.Add('(TovarName,Price,Sklad)'); ADOQuery1.SQL.Add('VALUES("'+ Edit1.Text +'",'+Edit2.Text+','+ Edit3.Text+')'); ADOQuery1.ExecSQL; end; procedure TForm1.DBGrid1CellClick(Column: TColumn); begin X:=DataSource1.DataSet.FieldByName('IDCode').AsInteger; end; procedure TForm1.Button2Click(Sender: TObject); {Удаление записей} begin ADOQuery1.Active:=false; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('DELETE FROM Таблица1'); ADOQuery1.SQL.Add('WHERE IDCode='+ IntToStr(X)); ADOQuery1.ExecSQL; end; procedure TForm1.Button3Click(Sender: TObject); {Редактирование записей} begin ADOQuery1.Active:=false; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('UPDATE Таблица1'); ADOQuery1.SQL.Add('SET TovarName='+'"'+ Edit1.Text+'"'+ ',Price='+Edit2.Text+ ',Sklad='+Edit3.Text); ADOQuery1.SQL.Add('WHERE IDCode='+IntToStr(X)); ADOQuery1.ExecSQL; end; end. ![]() |
#2
|
|||
|
|||
![]() Дело в том, что для изменения данных используется тот же компонент, что и для их отображения (TADOQuery). Используй второй компонент (еще один query), а для обновления отображаемых данных переоткрывай основной.
|
#3
|
||||
|
||||
![]() Спасибо, я попробую
![]() |