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

شرح رائع ومفصل
الرد
#4
(16-01-2017, 11:57 AM)ALKO كتب : السلام عليكم
بارك الله فيك
و لكني استعملت في البرنامج عناصر combo لتفادي هذه المشاكل فنوع الحيوان جعلت له combo ليختار الحيوان، و مثله للبلدية فيختارها و يتنقا إلى نافذة لكل منهما لإظافته إن كان غير موجود (البلدية أو الحيوان) و ذلك أيضا للجنس فيختار بين F أو M.
أي أن إحتمالية التكرار تكون صفر
 وشكرا
الرد
#5
Wink 
السلام عليكم
قم بارفاق قاعدة البيانات أو الجداول
و ان أمكن صورة للبرنامج
و سوف نبحث عن حل برمجي ان شاء الله
الحكمة ضالة المؤمن أنى وجدها فهو أحق الناس بها
الرد
#6
بسم الله الرحمن الرحيم
الصلاة السلام على رسول الله  أخي   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.


الملفات المرفقة
.rar   malade.rar (الحجم : 4.39 ك ب / التحميلات : 21)
الرد
#7
أسف نسيت أن أضع ملف قاعدة البيانات
مع ملفات المشروع

يجب تحميل المرفق الاول  malade
والمرفق الثاني  hamoudi075teq

  hamoudi075teq.rar    ملف قاعدة البيانات
 malade.rar   ملفات المشروع

وقكهما في نفس المجلد


الملفات المرفقة
.rar   hamoudi075teq.rar (الحجم : 347 بايت / التحميلات : 28)
الرد
#8
Photo 
(22-01-2017, 05:33 PM)ALKO كتب : السلام عليكم
هذه صور لقاعدة البيانات و الجدول المطلوب منا انشائه في البرنامج


الملفات المرفقة
.rar   merdu par animaux.rar (الحجم : 92.76 ك ب / التحميلات : 53)
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم