![]() |
|
كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية (/showthread.php?tid=8360) |
كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية - hamoudi075teq - 13-01-2017 اشتغل على برنامج لتسيير المرضى المنهوشين من طرف الحيوانات و واجهت مشكلة تتمثل في: كيفية إحصاء عدد المرضى حسب البلدية و مجال السن و الجنس في نفس الجدول حيث أن قاعدة البيانات تحتوي على جدول واحد و هو malade (N°, nom&prénom,age,commune,date_accident,sexe) أرجو من من عنده الحل ياعدني، و شكرا RE: كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية - ALKO - 16-01-2017 السلام عليكم للأسف لا يمكنك فعل ذلك بواسطة جدول واحد؟ ذلك ﻷمرين اﻷول بشري و يتمثل في امكانية الخطأ أي لو كان اسم البلدية تيارت و قمت أنت بكتابة مرة تيارت و أخرة تيرت و تيرة و.... حتى لو كان الامر غير متعمد فسيكون المشكل أن كل اسم سوف يدل على بلدية مستقلة. و مذا لو كان اسم البلدية متكرر في عدة ولايات ألن يكون خلط؟ اﻷمر الثاني علمي المشكل هنا أولا في خلط الحقول داخل الجدول أي جدول المرضى فيه البلدية و الحيوان و هما ليسا من نفس الجنس المشكل الثاني التكرار أي لو كان لديك 1000 مريض من نفس البلدية و عضهم كلهم كلب. لكن ليس نفس الكلب فكيف تفرق بين الكلاب ؟ على غرار أنك تعيد كتابة كلمة كلب و اسم البلدية 1000 مرة و هذا هدر للذاكرة و ينافي القواعد العلمية لقواعد البيانات العلائقية الحل يلزمك ثلاثة جداول المرضى و البلديات و الحيوانات و يكون اﻷمر جد سهل بواسطة استعلام بسيط لكن لمذا البلديات فقط ؟ فليكن الولايات ثم الدوائر ثم البلديات و يكون برنامجك صالح لكل ولايات الوطن و ان أضفت البلدان سيكون برنامجك صالح لكل بلدان العالم؟ ان كانت كل بلدان العالم تتبع نفس التقسيم أي ولاية... دائرة... بلدية
RE: كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية - sabre - 16-01-2017 بارك الله فيك شرح رائع ومفصل RE: كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية - hamoudi075teq - 21-01-2017 (16-01-2017, 11:57 AM)ALKO كتب : السلام عليكم RE: كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية - ALKO - 22-01-2017 السلام عليكم قم بارفاق قاعدة البيانات أو الجداول و ان أمكن صورة للبرنامج و سوف نبحث عن حل برمجي ان شاء الله RE: كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية - sabre - 22-01-2017 بسم الله الرحمن الرحيم الصلاة السلام على رسول الله أخي hamoudi075teq أحببت أن أقوم ببعض على المثال السابقعسى أن أنال من أجرك الذي تقوم بهالى هولاء المرضى الذين تحصيهم وأتمنى لك توفيق PHP كود : Projet Nom = maladesهذا المثال تصورته حسب موضوعك الاول ---------------------------- اسم الوحدة الاولى ---------------------------- 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.RE: كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية - sabre - 23-01-2017 أسف نسيت أن أضع ملف قاعدة البيانات مع ملفات المشروع يجب تحميل المرفق الاول malade والمرفق الثاني hamoudi075teq hamoudi075teq.rar ملف قاعدة البيانات malade.rar ملفات المشروع وقكهما في نفس المجلد RE: كيفية احصاء عدد المرضى حسب مجال السن و الجنس و البلدية - hamoudi075teq - 30-01-2017 (22-01-2017, 05:33 PM)ALKO كتب : السلام عليكم |