برنامج بدلفي شبه متقدم وقاعدة البيانات بارادوكس
صفحة 1 من اصل 1
برنامج بدلفي شبه متقدم وقاعدة البيانات بارادوكس
بسم الله الرحمن الرحيم
الصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين
برنامج بدلفي شبه متقدم وقاعدة البيانات بارادوكس
هذا برنامج بالدلفي وقاعدة البيانات من نوع بارادوكس
ماذا يفعل هذا البرنامج؟
1 ينشئ ملفان تلقائيا الاول من أجل أن نقوم بحفظ معلومات عن شخص، وكل سنة ينشئ ملف جديد
الثاني يحفظ فيه السنوات مثلا لو أردنا أن نرجع من السنة الحالية الى السنة السابقة
2 ملف معلومات شخص هو متكون مثلا من رقم التسجيل والاسم والتاريخ
التسجيل: نكتب رقم والاسم و التاريخ ونضغط فوق Add من أجل حفظ المعلومات
البحث: نكتب الاسم ونضغط فوق بحث أو ننقر مرتين في الشبكة فوق الاسم المراد
التعديل: نبحث ثم نعدل في مربعات النص ونضغط فوق تعديل
ملا حظة: تستطيع ان تزيد في عدد الحقول حسبما تشاء بكل سهولة
هذه المهام التي يقوم بها البرنامج
واجهة البرنامج متكونة من 3 مربعات نص من نوع TEdit
و 5 لافتة من نوع TLabel و مربع من نوع TDateTimePicker
و مربع ذو قائمة من نوع TDBLookupComboBox
و 4 ازرار من نوع TBitBtn و الشبكة من نوع TDBGrid
ونافذة غير مرئية اثناء التنفيذ من نوع TDataModule1 وضعت فيها
2 من نوع TTable و 2 TDataSource
من الناحية البرمجية
البرنامج يعطي فكرة عن البرمجة الموجهة بالكائنات
أنشأت في الوحدة unt_data1 تسجيلة record سميتها TPersonRec
تضم الرقم وللاسم التاريخ
وفئة class وسميتها TPerson المنهج أو الاجراء الذي ينفذ أولا Create
يلقي تنشيط Table1 و Table2 تهيئتهما من أجل اعطى القيم ك لاليا ونوع قاعدة البيانات
اذا كان الملف قاعدة البيانات غير موجود سيقوم بانشائه واذا كان لا سيتعامل مع الملف الموجود
المنهج CreateTables ينشئ اولا ملف يحمل اسم السنة الحالية وثانيا ملف Year1 يخزن فيه ملف اسم السنة الحالية
المنهج أو الدالة AddFunc تسند القيم حسب الترتيب النوع أي كل حقل من حقول الجدولTable1
يخذ الحقل الذي يتناسب معه في نوع من حقول التسجيلة
المنهج AddToTabe يجعل Table1 يأشر على آخر سجل و بالامر Last و يفتح سجل جديد بالامر Append
ثم يستدعي الدالة AddFunc وفي الأخير يتم قفل السجل بالامر Post
المنهج destroy نستطيع الاستغناء عنه لأن موجود في class
المنهج FindTable في ملف قاعدة البيانات وجلب القيمة ان وجدت وجعلها في التسجيلة PRec
المنهج Modify و يعدل سجل بالامر Edit
ثم يستدعي الدالة AddFunc وفي الأخير يتم قفل السجل بالامر Post
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]
ali- مبرمج مجتهد
- عدد المساهمات : 913
تاريخ التسجيل : 29/07/2013
رد: برنامج بدلفي شبه متقدم وقاعدة البيانات بارادوكس
ملف الوحدة unt_data1
ملف الوحدة unt_obdb
- الكود:
unit unt_data1;
interface
uses
SysUtils, Classes, DB, DBTables, Controls;
type
TPersonRec = record
Num: integer;
Nom: string[20];
DateE: TDate;
end;
TPerson = class
private
procedure CreateTables;
function AddFunc(PRec: TPersonRec): TPersonRec;
public
constructor create(ATableName: string);
destructor destroy; override;
procedure AddToTabe(PRec: TPersonRec);
procedure Modify(PRec: TPersonRec);
procedure FindTable(search: string; var PRec: TPersonRec);
end;
TDataModule1 = class(TDataModule)
Table1: TTable;
DataSource1: TDataSource;
Table2: TTable;
DataSource2: TDataSource;
private
public
end;
const NomTab = 'Year1.DB';
dbas = '';
var
DataModule1: TDataModule1;
implementation
{$R *.dfm}
{ TPerson }
function TPerson.AddFunc(PRec: TPersonRec): TPersonRec;
begin
with DataModule1 do
begin
Table1.FieldByName('Num').AsInteger := PRec.Num;
Table1.FieldByName('Nom').AsString := PRec.Nom;
Table1.FieldByName('DateE').AsDateTime := PRec.DateE;
end;
Result := PRec;
end;
procedure TPerson.AddToTabe(PRec: TPersonRec);
begin
with DataModule1 do
begin
Table1.Last;
Table1.Append;
AddFunc(PRec);
Table1.Post;
end;
end;
constructor TPerson.create(ATableName: string);
begin
with DataModule1 do
begin
Table1.Active := False;
Table2.Active := False;
Table1.DatabaseName := dbas;
Table1.TableType := ttParadox;
Table2.DatabaseName := dbas;
Table2.TableType := ttParadox;
if not FileExists(ATableName)then CreateTables
else begin
Table1.TableName := ATableName;
Table1.Open;
Table2.TableName := NomTab;
Table2.Open;
end;
end;
end;
procedure TPerson.CreateTables;
var s1: string;
begin
with DataModule1.Table1 do
begin
s1 := FormatDateTime('"data"yyyy',Now);
TableName := s1;
if not Exists then
begin
with FieldDefs do
begin
Clear;
with AddFieldDef do
begin
Name := 'Num';
DataType := ftInteger;
Required := True;
end;
with AddFieldDef do
begin
Name := 'Nom';
DataType := ftString;
Size := 20;
end;
with AddFieldDef do
begin
Name := 'DateE';
DataType := ftDate;
end;
end;
CreateTable;
end;
Open;
end;
if not FileExists(NomTab)then
begin
with DataModule1.Table2 do
begin
TableName := NomTab;
if not Exists then
begin
with FieldDefs do
begin
Clear;
with AddFieldDef do
begin
Name := 'Nom';
DataType := ftString;
Size := 20;
end;
end;
CreateTable;
end;
end;
end;
with DataModule1 do
begin
Table2.TableName := NomTab;
Table2.Open;
Table2.Last;
Table2.Append;
Table2.FieldByName('Nom').AsString := s1;
Table2.Post;
end;
end;
destructor TPerson.destroy;
begin
with DataModule1 do
begin
Table1.TableName := '';
Table1.Close;
end;
inherited destroy;
end;
procedure TPerson.FindTable(search: string; var PRec: TPersonRec);
begin
with DataModule1 do
begin
Table1.Locate('Nom',search,[]);
PRec.Num := Table1.FieldByName('Num').AsInteger;
PRec.Nom := Table1.FieldByName('Nom').AsString;
PRec.DateE := Table1.FieldByName('DateE').AsDateTime;
end;
end;
procedure TPerson.Modify(PRec: TPersonRec);
begin
with DataModule1 do
begin
Table1.Edit;
AddFunc(PRec);
Table1.Post;
end;
end;
end.
ملف الوحدة unt_obdb
- الكود:
unit unt_obdb;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids,unt_data1, Buttons,
ComCtrls, DBCtrls, Mask;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
btnAdd: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
BitBtn1: TBitBtn;
Edit4: TEdit;
DateTimePicker1: TDateTimePicker;
BitBtn2: TBitBtn;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
BitBtn3: TBitBtn;
Label5: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
procedure FormShow(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure DBLookupComboBox1Click(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
private
public
{ Public declarations }
Person: TPerson;
PRec: TPersonRec;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
Person:= TPerson.create(FormatDateTime('"data"yyyy',Now)+'.DB');
DBLookupComboBox1.ListSource := DataModule1.DataSource2;
DBLookupComboBox1.KeyField := 'Nom';
DBLookupComboBox1.ListField := 'Nom';
caption := FormatDateTime('"Year "yyyy',Now);
end;
procedure TForm1.btnAddClick(Sender: TObject);
begin // Ajoute
PRec.Num := StrToInt(Edit1.Text);
PRec.Nom := Edit2.Text;
PRec.DateE := DateTimePicker1.Date;
Person.AddToTabe(PRec);
btnAdd.Enabled := false;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin // recherche
Person.FindTable(Edit4.Text,PRec);
Edit1.Text := IntToStr(PRec.Num);
Edit2.Text := PRec.Nom;
DateTimePicker1.Date := PRec.DateE;
BitBtn2.Enabled := true;
btnAdd.Enabled := false;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin // Modifie
PRec.Num := StrToInt(Edit1.Text);
PRec.Nom := Edit2.Text;
PRec.DateE := DateTimePicker1.Date;
Person.Modify(PRec);
BitBtn2.Enabled := false;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Person := nil;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if (Edit1.Text <> '') and (Edit2.Text <> '') then
btnAdd.Enabled := true else btnAdd.Enabled := false;
end;
procedure TForm1.Edit4Change(Sender: TObject);
begin
if Edit4.Text <> '' then
BitBtn1.Enabled := true else BitBtn1.Enabled := false;
end;
procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
Person:= TPerson.create(DBLookupComboBox1.Text+'.DB');
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
Edit1.Text := DBGrid1.Fields[0].Text;
Edit2.Text := DBGrid1.Fields[1].Text;
DateTimePicker1.Date := DBGrid1.Fields[2].AsDateTime;
BitBtn2.Enabled := true;
BtnAdd.Enabled := false;
end;
end.
ali- مبرمج مجتهد
- عدد المساهمات : 913
تاريخ التسجيل : 29/07/2013
مواضيع مماثلة
» انشاء جدول قاعدة بيانات من نوع بارادوكس
» SqlConnection يتم من خلالها الاتصال بالسيرفر وقاعدة البيانات
» قواعد البيانات من نوع بارادوكس 7 تابعة للدلفي خمسة
» بخصوص تعديل برنامج مبرمج بدلفي وتغير ببرنامج أخر
» ربط قاعدة بيانات أكسس بدلفي وإجراء بعض العمليات عليها كالإضافة والتعديل والحذف والبحث بدلفي
» SqlConnection يتم من خلالها الاتصال بالسيرفر وقاعدة البيانات
» قواعد البيانات من نوع بارادوكس 7 تابعة للدلفي خمسة
» بخصوص تعديل برنامج مبرمج بدلفي وتغير ببرنامج أخر
» ربط قاعدة بيانات أكسس بدلفي وإجراء بعض العمليات عليها كالإضافة والتعديل والحذف والبحث بدلفي
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى