ربط قاعدة بيانات أكسس بدلفي وإجراء بعض العمليات عليها كالإضافة والتعديل والحذف والبحث بدلفي
صفحة 1 من اصل 1
ربط قاعدة بيانات أكسس بدلفي وإجراء بعض العمليات عليها كالإضافة والتعديل والحذف والبحث بدلفي
ربط قاعدة بيانات أكسس بدلفي وإجراء بعض العمليات عليها كالإضافة والتعديل والحذف والبحث بدلفي
ملف 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
مواضيع مماثلة
» كيفية انشاء قاعدة بيانات أكسس Access في فجول بيسك 6 وطباعة في Report
» خطوات انشاء قاعدة بيانات بمعالج و خطوات انشاء قاعدة بيانات يدويا
» مثال عن برنامج قاعدة بيانات
» انشاء قاعدة بيانات بـ Visual C++ كاملة 4
» انشاء قاعدة بيانات بـ Visual C++ كاملة 19
» خطوات انشاء قاعدة بيانات بمعالج و خطوات انشاء قاعدة بيانات يدويا
» مثال عن برنامج قاعدة بيانات
» انشاء قاعدة بيانات بـ Visual C++ كاملة 4
» انشاء قاعدة بيانات بـ Visual C++ كاملة 19
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى