Модификация записей в Access с помощью Delphi

Тема в разделе "Delphi - FAQ", создана пользователем -, 16 сен 2010.

Статус темы:
Закрыта.
  1. Гость

    Всем Привет! :blush:
    Задали на самостоятельное изучение тему "Как с помощью программы Delphi добавлять, удалять и редактировать записи в таблице Access".
    Написала программу, следуя указаниям методички, она должна соответственно добавлять, удалять и редактировать записи.
    Но возникло 2 проблемы:
    - Программа не редактирует записи, только удаляет и добавляет нормально
    - После нажатия кнопок "Добавить" или "Удалить" DBGrid1 на форме очищается, а этого быть не должно, нужно чтобы добавленные/удалённые/изменённые записи сразу же отображались на DBGrid1, без перезапуска программы.
    Вот код:
    Код (Text):
    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.
    Помогите пожалуйста кто чем может! :facepalm:
     
  2. etc

    etc Гость

    Научитесь использовать параметры в запросах, т.е. вот это - + Edit1.Text+ и есть ваша проблемма. С параметрами ее не будет.
    И еще, TDBAware (TDBEdit и иже) компоненты надо использовать, тоже помогает.

    Добавлено: Ну или на крайний случай http://codeby.net/forum/threads/37453.html?vi...st&p=182613
     
  3. Гость

    Большое спасибо :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей