اشتغل على برنامج لتسيير المرضى المنهوشين من طرف الحيوانات و واجهت مشكلة تتمثل في:
كيفية إحصاء عدد المرضى حسب البلدية و مجال السن و الجنس في نفس الجدول حيث أن قاعدة البيانات تحتوي على جدول واحد و هو malade (N°, nom&prénom,age,commune,date_accident,sexe)
أرجو من من عنده الحل ياعدني، و شكرا
السلام عليكم
للأسف لا يمكنك فعل ذلك بواسطة جدول واحد؟
ذلك ﻷمرين
اﻷول بشري و يتمثل في امكانية الخطأ أي لو كان اسم البلدية تيارت
و قمت أنت بكتابة مرة تيارت و أخرة تيرت و تيرة و....
حتى لو كان الامر غير متعمد فسيكون المشكل أن كل
اسم سوف يدل على بلدية مستقلة.
و مذا لو كان اسم البلدية متكرر في عدة ولايات ألن يكون خلط؟
اﻷمر الثاني علمي
المشكل هنا أولا في خلط الحقول داخل الجدول
أي جدول المرضى فيه البلدية و الحيوان و هما ليسا من نفس الجنس
المشكل الثاني التكرار أي لو كان لديك 1000 مريض من نفس البلدية و عضهم كلهم
كلب. لكن ليس نفس الكلب فكيف تفرق بين الكلاب ؟
على غرار أنك تعيد كتابة كلمة كلب و اسم البلدية 1000 مرة
و هذا هدر للذاكرة و ينافي القواعد العلمية لقواعد البيانات العلائقية
الحل
يلزمك ثلاثة جداول المرضى و البلديات و الحيوانات
و يكون اﻷمر جد سهل بواسطة استعلام بسيط
لكن لمذا البلديات فقط ؟ فليكن الولايات ثم الدوائر ثم البلديات
و يكون برنامجك صالح لكل ولايات الوطن
و ان أضفت البلدان سيكون برنامجك صالح لكل بلدان العالم؟
ان كانت كل بلدان العالم تتبع نفس التقسيم أي ولاية... دائرة... بلدية

بارك الله فيك
شرح رائع ومفصل
السلام عليكم
قم بارفاق قاعدة البيانات أو الجداول
و ان أمكن صورة للبرنامج
و سوف نبحث عن حل برمجي ان شاء الله
بسم الله الرحمن الرحيم
الصلاة السلام على رسول الله أخي hamoudi075teq أحببت أن أقوم ببعض على المثال السابقعسى أن أنال من أجرك الذي تقوم بهالى هولاء المرضى الذين تحصيهم وأتمنى لك توفيق
PHP كود :
Projet Nom = malades
Alias nom = malad
C:\malade
هذا المثال تصورته حسب موضوعك الاول
----------------------------
اسم الوحدة الاولى
----------------------------
PHP كود :
Nom de fichier = Unit1.pas
كود :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Form2.Show;
end;
end.
---------------------------------
اسم الوحدة الثانية
---------------------------------
Nom de fichier = Unit2.pas
كود :
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, DB, DBTables, StdCtrls,
Buttons, ComCtrls;
type
TForm2 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
BitBtn1: TBitBtn;
Table1N: TFloatField;
Table1Nom_prenom: TStringField;
Table1Age: TStringField;
Table1Commune: TStringField;
Table1Date_accident: TDateField;
Table1Sexe: TStringField;
Edit1: TEdit;
BitBtn2: TBitBtn;
Edit2: TEdit;
BitBtn3: TBitBtn;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
BitBtn6: TBitBtn;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
DateTimePicker1: TDateTimePicker;
ComboBox1: TComboBox;
Label8: TLabel;
Label9: TLabel;
ComboBox2: TComboBox;
BatchMove1: TBatchMove;
Table2: TTable;
SaveDialog1: TSaveDialog;
Button1: TButton;
OpenDialog1: TOpenDialog;
Button2: TButton;
Table4: TTable;
DBNavigator2: TDBNavigator;
procedure BitBtn1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
public
end;
procedure TForm2FormActivates(path: string);
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
Table1.First;
Table1.Filter := 'Commune='+chr(39)+Edit1.Text+chr(39);
Table1.Filtered := true;
end;
procedure TForm2.Edit1Change(Sender: TObject);
begin
BitBtn1.Enabled:=true
end;
procedure TForm2.Edit3Change(Sender: TObject);
begin
BitBtn3.Enabled:=true
end;
procedure TForm2.Edit2Change(Sender: TObject);
begin
BitBtn2.Enabled:=true
end;
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
Table1.First;
Table1.Filter := 'Age='+chr(39)+Edit2.Text+chr(39);
Table1.Filtered := true;
end;
procedure TForm2.BitBtn3Click(Sender: TObject);
var
s: string;
begin
if ComboBox2.Text = 'ذكر' then s := '1'
else s := '0';
Table1.First;
Table1.Filter := 'Sexe='+chr(39)+s+chr(39);
Table1.Filtered := true;
end;
procedure enregistrements;
begin
Form2.Table2.TableName := 'C:\malade\hamoudi075teq.db';
Form2.BatchMove1.Source :=Form2.Table1;
Form2.BatchMove1.Destination := Form2.Table2;
Form2.BatchMove1.Mode :=batCopy;
Form2.BatchMove1.Execute; { }
end;
procedure TForm2.FormCreate(Sender: TObject);
function LoadFile(NomFichier: string): string;
var MeList:TStringList;
begin
MeList:=TStringList.Create;
try
MeList.Clear;
MeList.LoadFromFile(NomFichier);
Result:=MeList.Strings[0];
finally
MeList.Free;
end;
end;
begin
if not DirectoryExists('C:\malade') then
CreateDir('C:\malade');
Table1.Close;
if FileExists('ttf')then
begin
Table1.DatabaseName:=LoadFile('ttf');
Table1.TableType := ttParadox;
Table1.TableName := 'hamoudi075teq.db';
Table1.Open;
end
else begin
try
Table1.DatabaseName:='malad';
Table1.TableType := ttParadox;
Table1.TableName := 'hamoudi075teq.db';
Table1.Open;
except
on EDatabaseError do begin
Table1.DatabaseName:=ExtractFilepath(application.ExeName);
Table1.TableType := ttParadox;
Table1.TableName := 'hamoudi075teq.db';
Table1.Open;
end; end; end;
if (DirectoryExists('C:\malade'))and
(not FileExists('C:\malade\hamoudi075teq.db')) then
enregistrements;
end;
procedure TForm2.BitBtn4Click(Sender: TObject);
begin
Table1.Filtered := false;
end;
procedure TForm2.BitBtn6Click(Sender: TObject);
begin
if Table1.Filtered then Table1.Filtered := false;
Table1.Last;
Table1.Append;
Table1.FieldByName('N').AsString := Edit4.Text;
Table1.FieldByName('Nom_prenom').AsString := Edit5.Text;
Table1.FieldByName('Age').AsString := Edit6.Text;
Table1.FieldByName('Commune').AsString := Edit7.Text;
Table1.FieldByName('Date_accident').AsDateTime := DateTimePicker1.Date;
if ComboBox1.Text = 'ذكر' then
Table1.FieldByName('Sexe').AsString := '1'
else if ComboBox1.Text = 'أنثى' then
Table1.FieldByName('Sexe').AsString := '0'
else ;
Table1.Post;
BitBtn6.Enabled := false;
end;
procedure TForm2.Edit4Change(Sender: TObject);
begin
BitBtn6.Enabled := true;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
F:TextFile;
s: string;
begin
if OpenDialog1.Execute then
begin
AssignFile(F,ExtractFilepath(application.ExeName)+'ttf.txt');
Rewrite(F);
s := ExtractFileDir(OpenDialog1.FileName);
write(F,s);
CloseFile(F);
TForm2FormActivates(s);
end;
end;
procedure TForm2.Button2Click(Sender: TObject);
var
F:TextFile;
s: string;
begin
SaveDialog1.FileName := Table1.TableName;
if SaveDialog1.Execute then
begin
Table2.TableName := SaveDialog1.FileName;
BatchMove1.Source := Table1;
BatchMove1.Destination := Table2;
BatchMove1.Mode := batCopy;
BatchMove1.Execute;
AssignFile(F,ExtractFilepath(application.ExeName)+'ttf.txt');
Rewrite(F);
s := ExtractFileDir(SaveDialog1.FileName);
write(F,s);
CloseFile(F);
TForm2FormActivates(s);
end;
end;
procedure TForm2FormActivates(path: string);
const DbiP='malad';
var
AParam: TStringList;
begin
AParam := TStringList.Create;
try
AParam.Clear;
AParam.Add('PATH='+path); //+GetCurrentDir
if Session.IsAlias(DbiP) then
Session.ModifyAlias(DbiP, AParam)
else
Session.AddStandardAlias(Dbip,GetCurrentDir,'Paradox');
Session.SaveConfigFile;
Finally
AParam.Free;
end;
end;
procedure TForm2.FormActivate(Sender: TObject);
begin
TForm2FormActivates('C:\malade');
end;
end.
أسف نسيت أن أضع ملف قاعدة البيانات
مع ملفات المشروع
يجب تحميل المرفق الاول malade
والمرفق الثاني hamoudi075teq
hamoudi075teq.rar ملف قاعدة البيانات
malade.rar ملفات المشروع
وقكهما في نفس المجلد