دلفي تعليم
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

ربط قاعدة بيانات أكسس بدلفي وإجراء بعض العمليات عليها كالإضافة والتعديل والحذف والبحث بدلفي

اذهب الى الأسفل

ربط قاعدة بيانات أكسس بدلفي وإجراء بعض العمليات عليها كالإضافة والتعديل والحذف والبحث بدلفي  Empty ربط قاعدة بيانات أكسس بدلفي وإجراء بعض العمليات عليها كالإضافة والتعديل والحذف والبحث بدلفي

مُساهمة  djelal 5/2/2022, 12:23 pm


ربط قاعدة بيانات أكسس بدلفي وإجراء بعض العمليات عليها كالإضافة والتعديل والحذف والبحث بدلفي
ملف pdf
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
مشروع بدلفي
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

الربط بالطريقة البرمجية
الوحدة DataModule1
الكود:

الكود:


unit UnitDataModuleW;

interface

uses
  SysUtils, Classes, ADODB, DB, ComObj, Forms, Dialogs;

type
  TDataModule1 = class(TDataModule)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
  public
    procedure OpenDB;
    procedure QOpenDB;
    procedure ConnectionOpen;
  end;

const
  FileDB = 'DB002.accdb';
  TableName = 'tbl1';
  Provider1 = 'Provider=Microsoft.ACE.OLEDB.12.0;';

var
  DataModule1: TDataModule1;

implementation

{$R *.dfm}

procedure TDataModule1.ConnectionOpen;
begin
  ADOConnection1.Close;
  try
    ADOConnection1.ConnectionString := Provider1+'Data Source='
    +ExtractFilePath(Application.ExeName)+FileDB
    +';Persist Security Info=False';
  except
    on E: EAccessViolation do
    ShowMessage(E.ClassName + #10 + E.Message);
  end;
  ADOConnection1.LoginPrompt := false;
end;

procedure TDataModule1.OpenDB;
begin
  try
    ConnectionOpen;
    ADOTable1.Connection := ADOConnection1;
    DataSource1.DataSet := ADOTable1;
    ADOTable1.TableName := TableName;
    ADOTable1.Open;
  except
    on E: EOleException do
    ShowMessage(E.ClassName + #10 + E.Message);
  end;
end;

procedure TDataModule1.QOpenDB;
begin
  try
    ConnectionOpen;
    ADOQuery1.Connection := ADOConnection1;
    DataSource1.DataSet := ADOQuery1;
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('SELECT * FROM '+TableName);
    ADOQuery1.Open;
  except
    on E: EOleException do
    ShowMessage(E.ClassName + #10 + E.Message);
  end;
end;

end.


الوحدة UnitW

الكود:


unit UnitW;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, ComCtrls, DBTables;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    ButtonSearch: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    DateTimePicker1: TDateTimePicker;
    ButtonView: TButton;
    RadioButtonSearchByTable: TRadioButton;
    RadioButtonSearchByQuery: TRadioButton;
    CheckBox1: TCheckBox;
    GroupBox1: TGroupBox;
    ButtonInsert: TButton;
    ButtonUpdate: TButton;
    ButtonDelete: TButton;
    EditNom: TEdit;
    EditPrenom: TEdit;
    dtDate1: TDateTimePicker;
    procedure ButtonSearchClick(Sender: TObject);
    procedure ButtonViewClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure ButtonInsertClick(Sender: TObject);
    procedure ButtonUpdateClick(Sender: TObject);
    procedure RadioButtonSearchByQueryClick(Sender: TObject);
    procedure RadioButtonSearchByTableClick(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure EditNomChange(Sender: TObject);
    procedure ButtonDeleteClick(Sender: TObject);
  private
    procedure ProQueryInsert;
    procedure ProcTableInsert;
    procedure ProQueryUpdate;
    procedure ProcTableUpdate;
    procedure ProcTableDelete;
    procedure ProQueryDelete;
  end;


var
  Form1: TForm1;

implementation

uses ComObj, UnitDataModuleW;

{$R *.dfm}

procedure TForm1.ButtonSearchClick(Sender: TObject);
var
 s1: string;
 bool1: boolean;
begin
  bool1 := false;
  s1 := DateToStr(DateTimePicker1.Date);
  with DataModule1 do
  begin
  if RadioButtonSearchByQuery.Checked then
  begin
  if not CheckBox1.Checked then
    // بحث بالاسم فقط وباستعمالADOQuery1
    if ADOQuery1.Locate('Nom',Edit1.Text,[]) then bool1 := true
  else
    // بحث متعدد وبالاسم واللقب والتاريخ وباستعمال  ADOQuery1
    if ADOQuery1.Locate('Nom;Prenom;Datee',
      VarArrayOf([Edit1.Text, Edit2.Text, StrToDate(s1)]),
      [loCaseInsensitive, loPartialKey]) then bool1 := true;
  end else if RadioButtonSearchByTable.Checked then
  begin
    if CheckBox1.Checked then
    // بحث بالاسم فقط وباستعمال وباستعمال ADOTable1
      if ADOTable1.Locate('Nom',Edit1.Text,[]) then bool1 := true
    else
      // بحث متعدد وبالاسم واللقب والتاريخ ADOTable1
      if ADOTable1.Locate('Nom;Prenom;Datee',
        VarArrayOf([Edit1.Text, Edit2.Text, StrToDate(s1)]),
        [loCaseInsensitive, loPartialKey]) then bool1 := true;
  end;
  end;
  if bool1 then
  begin
    ButtonDelete.Enabled := true;
    ButtonUpdate.Enabled := true;
  end;
  ButtonSearch.Enabled := false;
end;

procedure TForm1.ButtonViewClick(Sender: TObject);
begin
  with DataModule1 do
  try
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('SELECT * FROM '+TableName);
    ADOQuery1.Open;
  except
    on E: EOleException do
    ShowMessage(E.ClassName + #10 + E.Message);
  end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
 DBGrid1.DataSource := DataModule1.DataSource1;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
  begin
    DateTimePicker1.Enabled := true;
    Edit2.Enabled := true;
    CheckBox1.Caption := 'Unactive';
  end
    else begin
    DateTimePicker1.Enabled := false;
    Edit2.Enabled := false;
    CheckBox1.Caption := 'Active';
  end;
end;

procedure TForm1.ProQueryInsert;
begin
  with DataModule1.ADOQuery1 do
  begin
    Close;
    with SQL do
    begin
      Clear;
      Add('INSERT INTO tbl1(Nom, Prenom, Datee)');
      Add(' VALUES(:pNom, :pPrenom, :pDatee)');
    end;
    with Parameters do
    begin
{
      ParamByName('Nom').Value := EditNom.Text;
      ParamByName('Prenom').Value  := EditPrenom.Text;
      ParamByName('Datee').Value  := DateToStr(dtDate1.Date);
}
    ParamValues['pNom'] := EditNom.Text;
    ParamValues['pPrenom'] := EditPrenom.Text;
    ParamValues['pDatee'] := DateToStr(dtDate1.Date);

      Prepared := true;
      ExecSQL;
    end;
  end;
end;

procedure TForm1.ProcTableInsert;
begin
  with DataModule1 do
  begin
    ADOTable1.Append;
    ADOTable1.FieldByName('Nom').AsString := EditNom.Text;
    ADOTable1.FieldByName('Prenom').AsString := EditPrenom.Text;
    ADOTable1.FieldByName('Datee').AsString := DateToStr(dtDate1.Date);
    ADOTable1.Post;
  end;
end;

procedure TForm1.ProcTableUpdate;
begin
 with DataModule1 do
  begin
    ADOTable1.Edit;
    ADOTable1.FieldByName('Nom').AsString := EditNom.Text;
    ADOTable1.FieldByName('Prenom').AsString := EditPrenom.Text;
    ADOTable1.FieldByName('Datee').AsString := DateToStr(dtDate1.Date);
    ADOTable1.Post;
  end;
end;

procedure TForm1.ProQueryUpdate;
begin
  DataModule1.ADOQuery1.Close;
  DataModule1.ADOQuery1.SQL.Clear;
  DataModule1.ADOQuery1.SQL.Add('UPDATE tbl1 SET Nom=pNom, Prenom=pPrenom, Datee=pDatee');
  DataModule1.ADOQuery1.SQL.Add(' WHERE Nom=pNom');

  DataModule1.ADOQuery1.Parameters.ParamByName('pNom').Value := EditNom.Text;
  DataModule1.ADOQuery1.Parameters.ParamByName('pPrenom').Value  := EditPrenom.Text;
  DataModule1.ADOQuery1.Parameters.ParamByName('pDatee').Value  := DateToStr(dtDate1.Date);

  DataModule1.ADOQuery1.Prepared := true;
  DataModule1.ADOQuery1.ExecSQL;
end;

procedure TForm1.ButtonInsertClick(Sender: TObject);
begin
  if RadioButtonSearchByQuery.Checked then
    ProQueryInsert
  else if RadioButtonSearchByTable.Checked then
    ProcTableInsert;
end;

procedure TForm1.ButtonUpdateClick(Sender: TObject);
begin
  if RadioButtonSearchByQuery.Checked then
    ProQueryUpdate
  else if RadioButtonSearchByTable.Checked then
    ProcTableUpdate;
  Edit1.Text := '';
  ButtonUpdate.Enabled := false;
  ButtonDelete.Enabled := false;
end;

procedure TForm1.RadioButtonSearchByQueryClick(Sender: TObject);
begin
  DataModule1.QOpenDB;
  ButtonView.Enabled := true;
end;

procedure TForm1.RadioButtonSearchByTableClick(Sender: TObject);
begin
  DataModule1.OpenDB;
  ButtonView.Enabled := true;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  if Edit1.Text = '' then
  ButtonSearch.Enabled := false
  else
  ButtonSearch.Enabled := true;
end;

procedure TForm1.EditNomChange(Sender: TObject);
begin
  if EditNom.Text = '' then
  ButtonInsert.Enabled := false
  else
  ButtonInsert.Enabled := true;
end;

procedure TForm1.ProcTableDelete;
begin
  if Edit1.Text <> '' then
  DataModule1.ADOTable1.Delete;
end;

procedure TForm1.ProQueryDelete;
begin
  with DataModule1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('DELETE FROM tbl1');
    ADOQuery1.SQL.Add(' WHERE Nom=pNom');
    ADOQuery1.Parameters.ParamByName('pNom').Value := Edit1.Text;
    ADOQuery1.Prepared := true;
    ADOQuery1.ExecSQL;
  end;
end;

procedure TForm1.ButtonDeleteClick(Sender: TObject);
begin
  if RadioButtonSearchByQuery.Checked then
    ProQueryDelete
  else if RadioButtonSearchByTable.Checked then
    ProcTableDelete;
  Edit1.Text := '';
  ButtonDelete.Enabled := false;
  ButtonUpdate.Enabled := false;
end;

end.


djelal
مبرمج مجتهد

عدد المساهمات : 157
تاريخ التسجيل : 29/04/2015

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

- مواضيع مماثلة

 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى