لغة الدالفي delphi كل ما يتعلق بالدالفي و الباسكال

إضافة رد
قديم 28-04-2010, 07:51 AM
  #1
lila88
 
La spécialité: Autres
جامعة منتوري قسنطينة
تاريخ التسجيل: 06-09-2009
المشاركات: 164
lila88 عضو يستحق التميزlila88 عضو يستحق التميزlila88 عضو يستحق التميز
so3al الترشيح في قواعد البيانات الدالفي


السلام عليكم , أرجو أن تجيبني على هذه الأسئلة
مثلا عندي جدول الطالب و الذي يحوي الخصائص التالية:
num,nom , prenom,sexe,adresse,date_nةlie u_n
ما هي كيفية حساب : عدد الإناث, عدد الدكور, عدد الطلبة
كل في edit خاص به
و شكرا



التعديل الأخير تم بواسطة يوسف الضادي ; 06-05-2010 الساعة 05:44 PM سبب آخر: العنوان
lila88 غير متواجد حالياً  
رد مع اقتباس
قديم 02-05-2010, 12:11 PM
  #2
Amir_Kader
 
La spécialité: Génie civil
جامعة أبو بكر بلقايد - تلمسان
تاريخ التسجيل: 26-11-2008
الدولة: الجزائر الحبيبة
المشاركات: 16
Amir_Kader عضو يستحق التميز
افتراضي رد: إلى amir_kader

السلام عليكم و رحمة الله و بركاته
في البداية آسف على الإنقطاع عن المنتدى لأسباب مهنية.
بخصوص السؤال، إذا كنت تتكلمين عن قاعدة بيانات Database تحتوي على هذه المعلومات، فالحل الأسهل يكون بالترشيح filtrage و يكون ذلك على النحو الآتي :
Var I:Integer; //déclarer l'entier
Begin
Table1.Filter:='sexe = '+QuotedStr('F'); //utiliser "M" et "F" par exemple
Table1.Filtered:=True; //activer le filtrage de données
I:=Table1.RecordCount; //la table va contenir les enregistrements en F
Edit1.Text:=IntToStr(I); //convertir l'Integer en String

Table1.Filter:='sexe = '+QuotedStr('M'); //utiliser "M" et "F" par exemple
Table1.Filtered:=True; //activer le filtrage de données
I:=Table1.RecordCount; //la table va contenir les enregistrements en M
Edit2.Text:=IntToStr(I); //convertir l'Integer en String

Table1.Filtered:=False; //désactiver le filtrage de données
I:=Table1.RecordCount; //la table va contenir tous les enregistrements
Edit3.Text:=IntToStr(I); //convertir l'Integer en String
End; //fin de la procédure
المبدأ هو ترشيح التسجيلات enregistrements التي يكون فيها النطاق champ الذي يحوي جنس الطالب sexe حيث يجب أن يكون M أو F و إلا تغيير القيم حسب الإختيار، و الطريقة هي :
1- تحديد شروط الترشيح
2- تفعيل الترشيح
3- القيام بالعمليات اللازمة على التسجيلات المرشحة
4- إلغاء الترشيح
edit1 سيحتوي على عدد الإناث، edit2 على عدد الذكور و edit3 على العدد الكلي، و إذا لم يكن العدد الكلي يساوي المجموع فهذا يعني أن هنالك معلومات ناقصة أو تسجيلات فارغة.
ملاحظة أخيرة، و هي أنه من الأفضل إضافة تعليمة تسمح بإزالة التسجيلات الفارغة، مثلا :
Table1.Filtered:=False; //o
Table1.first; //o
For I:=1 To Table1.RecordCount Do
Begin
If Table1.FieldByName('Nom').AsSt ring='' Then //il faut reprendre le nom du champ exactement, différence majuscules minuscules aussi
Table1.Delete; //o
Table1.Next; //o
End; //o

و هنالك طريقة ثانية (أسهل) دون استعمال الترشيح :
Var I:Integer,NM,NF,NT; //déclarer l'entier
Begin
Table1.first; //remettre en première position
NM:=0; //initialiser le nombre des masculins
NF:=0; //initialiser le nombre des féminins

For I:=1 To Table1.RecordCount Do
Begin
If Table1.FieldByName('sexe').asS tring='F' Then
NF:=NF+1
Else If Table1.FieldByName('sexe').asS tring='M' Then
NM:=NM+1
Else
Application.MassageBox('Il y a une erreur de données','ERREUR',MB_OK); //message d'erreur si ce n'est ni F ni M
Table1.Next; //passer à l'enregistrement suivant
End; //o
Edit1.text:=IntToStr(NF); // nombre de femmes dans Edit1
Edit2.text:=IntToStr(NM); // nombre d'hommes dans Edit2
NT:=NF+NM; //nombre total
Edit3.text:=IntToStr(NT); // nombre total dans Edit3
If NT<>Table1.RecordCount Then
Application.MassageBox('Il y a une erreur de données','ERREUR',MB_OK); //message d'erreur si ce n'est ni F+M n'est pas égal au total
End; //o

آمل أن أكون قد وفقت في الإجابة على السؤال، و ما توفيقي إلا بالله.
السلام عليكم و رحمة الله و بركاته

التعديل الأخير تم بواسطة Amir_Kader ; 02-05-2010 الساعة 01:18 PM
Amir_Kader غير متواجد حالياً  
رد مع اقتباس
قديم 07-05-2010, 04:49 PM
  #3
Virtuelis
 
La spécialité: sciences d'information & communication
جامعة منتوري قسنطينة
تاريخ التسجيل: 07-05-2010
المشاركات: 6
Virtuelis عضو يستحق التميز
افتراضي رد: إلى amir_kader

Var I:Integer; //déclarer l'entier
Begin
Table1.Filter:='sexe = '+QuotedStr('F'); //utiliser "M" et "F" par exemple
Table1.Filtered:=True; //activer le filtrage de données
I:=Table1.RecordCount; //la table va contenir les enregistrements en F
Edit1.Text:=IntToStr(I); //convertir l'Integer en String

1. Aiez pitiédu processeur ! il a beaucoup de choses à faire ! réduisez votre code
Edit1.Text := IntToStr(Table1.RecordCount).
2. Un composant TEdit n'est pas fait pour afficher les données, c'est fait pour la saisie, alors essayer de ne pas l'utiliser, mais utiliser des TLabel à la place : (Label1.Caption := IntToStr(Table1.RecordCount);

Table1.Filter:='sexe = '+QuotedStr('M'); //utiliser "M" et "F" par exemple
Table1.Filtered:=True; //activer le filtrage de données
I:=Table1.RecordCount; //la table va contenir les enregistrements en M
Edit2.Text:=IntToStr(I); //convertir l'Integer en String

Table1.Filtered:=False; //désactiver le filtrage de données
I:=Table1.RecordCount; //la table va contenir tous les enregistrements
Edit3.Text:=IntToStr(I); //convertir l'Integer en String

*. Mon ami, n'oublie pas d'ôter le filtre avant de quitter la procédure, dans un grand travail ça peut créer des complications trop dures à contrôler !

End; //fin de la procédure

----------------------------------------------------



Table1.Filtered:=False; //o
Table1.first; //o
For I:=1 To Table1.RecordCount Do
Begin
If Table1.FieldByName('Nom').AsSt ring='' Then //il faut reprendre le nom du champ exactement, différence majuscules minuscules aussi
Table1.Delete; //o
Table1.Next; //o
End; //o




Var I:Integer,NM,NF,NT; //déclarer l'entier
Begin
Table1.first; //remettre en première position
NM:=0; //initialiser le nombre des masculins
NF:=0; //initialiser le nombre des féminins

For I:=1 To Table1.RecordCount Do
Begin
If Table1.FieldByName('sexe').asS tring='F' Then
NF:=NF+1
Else If Table1.FieldByName('sexe').asS tring='M' Then
NM:=NM+1
Else
Application.MassageBox('Il y a une erreur de données','ERREUR',MB_OK); //message d'erreur si ce n'est ni F ni M
Table1.Next; //passer à l'enregistrement suivant
End; //o
Edit1.text:=IntToStr(NF); // nombre de femmes dans Edit1
Edit2.text:=IntToStr(NM); // nombre d'hommes dans Edit2
NT:=NF+NM; //nombre total
Edit3.text:=IntToStr(NT); // nombre total dans Edit3
If NT<>Table1.RecordCount Then
Application.MassageBox('Il y a une erreur de données','ERREUR',MB_OK); //message d'erreur si ce n'est ni F+M n'est pas égal au total
End; //o


[/QUOTE]

Une application de gestion d'une base de données doit être solide en matière de contrôle de données, alors il faut pas apprendre une mauvaise habitude dès le début et laisser l'occasion à une mauvaise donnée de se faire enregistrée dans la base, si nous avons un champs qui doit porter M ou F, il faut jamais que l'application permette à une autre valeur de venir prendre la place ! et il ne faut jamais apprendre à quelqu'un d'une façon de lui faire admettre que ça base peut avoir une rendandance de données ou des données incorrectes qui ne doivent pas y être enregistrées, alors, il faut répondre en prenant en compte que les données sont bonne sur la base et faire la remarque qu'il faut faire attention pour contrôler les données le temps qu'on les introduise.
Virtuelis غير متواجد حالياً  
رد مع اقتباس
قديم 08-05-2010, 09:07 PM
  #4
ING_HYD
مشرف منتدى هندسة الري
 الصورة الرمزية ING_HYD
 
La spécialité: Hydraulique
جامعة حسيبة بن بوعلي شلف
تاريخ التسجيل: 08-05-2010
الدولة: الجزائر
المشاركات: 1,124
ING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداع
افتراضي رد: الترشيح في قواعد البيانات الدالفي

salam
il n'est pas très commode d'utiliser un composant Table quand les critères de sélections se multiplie. Pour cela le composant TQuery est plus pratique car il donne usage à l'utilisation du code SQL qui est robuste et très puissant en matière de rapidité et de ressources
ING_HYD غير متواجد حالياً  
رد مع اقتباس
قديم 09-05-2010, 08:48 AM
  #5
Virtuelis
 
La spécialité: sciences d'information & communication
جامعة منتوري قسنطينة
تاريخ التسجيل: 07-05-2010
المشاركات: 6
Virtuelis عضو يستحق التميز
افتراضي رد: الترشيح في قواعد البيانات الدالفي

اقتباس:
المشاركة الأصلية كتبت بواسطة ING_HYD مشاهدة المشاركة
salam

il n'est pas très commode d'utiliser un composant Table quand les critères de sélections se multiplie. Pour cela le composant TQuery est plus pratique car il donne usage à l'utilisation du code SQL qui est robuste et très puissant en matière de rapidité et de ressources
Salut l'ami
J'utilise Delphi depuis sa version 1.0, et je m'occupe toujours de ces nouveautés est-ce jusqu'à présent, depuis 1996, et j'ai conçu plus de 30 applications commerciales avec Delphi, qui sont déployé sur l'Est et le centre algériens dans de divers établissements, durant cette expérience, j'ai appris que l'utilisation des TQuery sous Delphi a quelques incovénients, et le filtratge de données par la propriété "Filter" des tables est beaucoup plus efficace et plus rapide, car, les composants TQuery utilisent des fichiers temporaires qui rend le fonctionnement de l'application un peu plus lourd, car quand on traite une base de données de 1 Mo c'est pas le cas comme lorsqu'on traite une base de donnée de 100Mo, l'utilisation des TQuery est nécessaire quand il s'agit d'une imprission de données issues de plusieurs tables suivant plusieurs critère de tri, mais concernant le filtrage, d'après mon expérience, lobjet TQuery n'est pas assez fort avec les bases de données volumineuses.
Virtuelis غير متواجد حالياً  
رد مع اقتباس
قديم 30-05-2010, 05:28 AM
  #6
ING_HYD
مشرف منتدى هندسة الري
 الصورة الرمزية ING_HYD
 
La spécialité: Hydraulique
جامعة حسيبة بن بوعلي شلف
تاريخ التسجيل: 08-05-2010
الدولة: الجزائر
المشاركات: 1,124
ING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداعING_HYD عضو محترف الابداع
افتراضي رد: الترشيح في قواعد البيانات الدالفي

اقتباس:
المشاركة الأصلية كتبت بواسطة Virtuelis مشاهدة المشاركة
Salut l'ami
J'utilise Delphi depuis sa version 1.0, et je m'occupe toujours de ces nouveautés est-ce jusqu'à présent, depuis 1996, et j'ai conçu plus de 30 applications commerciales avec Delphi, qui sont déployé sur l'Est et le centre algériens dans de divers établissements, durant cette expérience, j'ai appris que l'utilisation des TQuery sous Delphi a quelques incovénients, et le filtratge de données par la propriété "Filter" des tables est beaucoup plus efficace et plus rapide, car, les composants TQuery utilisent des fichiers temporaires qui rend le fonctionnement de l'application un peu plus lourd, car quand on traite une base de données de 1 Mo c'est pas le cas comme lorsqu'on traite une base de donnée de 100Mo, l'utilisation des TQuery est nécessaire quand il s'agit d'une imprission de données issues de plusieurs tables suivant plusieurs critère de tri, mais concernant le filtrage, d'après mon expérience, lobjet TQuery n'est pas assez fort avec les bases de données volumineuses.
salam
très juste ce que tu dis mais faudrait-il encore préciser deux points essentiels
1. j'ai comme l'impression que tu utilise le BDE, si c'est le cas alors je te dis sans hésitation que le problème que tu évoques vient de là, le BDE n'est plus soutenu depuis la version 5 de Delphi, il a été abandonné et remplacé par ADO
2. en fait j'ai répondu sans connaitre les contrainte de l'application sinon je dirais qu'il faut utiliser les composant dbGo mais faudrait-il encore que je sache le SGBD avec lequel notre ami travail, les composants d'accès et la taille de sa bd

merci de me lire
ING_HYD غير متواجد حالياً  
رد مع اقتباس
قديم 10-05-2010, 10:59 AM
  #7
Amir_Kader
 
La spécialité: Génie civil
جامعة أبو بكر بلقايد - تلمسان
تاريخ التسجيل: 26-11-2008
الدولة: الجزائر الحبيبة
المشاركات: 16
Amir_Kader عضو يستحق التميز
افتراضي رد: إلى amir_kader

اقتباس:
المشاركة الأصلية كتبت بواسطة Virtuelis مشاهدة المشاركة
Var I:Integer; //déclarer l'entier

Begin
Table1.Filter:='sexe = '+QuotedStr('F'); //utiliser "M" et "F" par exemple
Table1.Filtered:=True; //activer le filtrage de données
I:=Table1.RecordCount; //la table va contenir les enregistrements en F
Edit1.Text:=IntToStr(I); //convertir l'Integer en String

1. Aiez pitiédu processeur ! il a beaucoup de choses à faire ! réduisez votre code
Edit1.Text := IntToStr(Table1.RecordCount).
2. Un composant TEdit n'est pas fait pour afficher les données, c'est fait pour la saisie, alors essayer de ne pas l'utiliser, mais utiliser des TLabel à la place : (Label1.Caption := IntToStr(Table1.RecordCount);

Table1.Filter:='sexe = '+QuotedStr('M'); //utiliser "M" et "F" par exemple
Table1.Filtered:=True; //activer le filtrage de données
I:=Table1.RecordCount; //la table va contenir les enregistrements en M
Edit2.Text:=IntToStr(I); //convertir l'Integer en String

Table1.Filtered:=False; //désactiver le filtrage de données
I:=Table1.RecordCount; //la table va contenir tous les enregistrements
Edit3.Text:=IntToStr(I); //convertir l'Integer en String

*. Mon ami, n'oublie pas d'ôter le filtre avant de quitter la procédure, dans un grand travail ça peut créer des complications trop dures à contrôler !

End; //fin de la procédure

----------------------------------------------------



Table1.Filtered:=False; //o
Table1.first; //o
For I:=1 To Table1.RecordCount Do
Begin
If Table1.FieldByName('Nom').AsSt ring='' Then //il faut reprendre le nom du champ exactement, différence majuscules minuscules aussi
Table1.Delete; //o
Table1.Next; //o
End; //o




Var I:Integer,NM,NF,NT; //déclarer l'entier
Begin
Table1.first; //remettre en première position
NM:=0; //initialiser le nombre des masculins
NF:=0; //initialiser le nombre des féminins

For I:=1 To Table1.RecordCount Do
Begin
If Table1.FieldByName('sexe').asS tring='F' Then
NF:=NF+1
Else If Table1.FieldByName('sexe').asS tring='M' Then
NM:=NM+1
Else
Application.MassageBox('Il y a une erreur de données','ERREUR',MB_OK); //message d'erreur si ce n'est ni F ni M
Table1.Next; //passer à l'enregistrement suivant
End; //o
Edit1.text:=IntToStr(NF); // nombre de femmes dans Edit1
Edit2.text:=IntToStr(NM); // nombre d'hommes dans Edit2
NT:=NF+NM; //nombre total
Edit3.text:=IntToStr(NT); // nombre total dans Edit3
If NT<>Table1.RecordCount Then
Application.MassageBox('Il y a une erreur de données','ERREUR',MB_OK); //message d'erreur si ce n'est ni F+M n'est pas égal au total
End; //o

Une application de gestion d'une base de données doit être solide en matière de contrôle de données, alors il faut pas apprendre une mauvaise habitude dès le début et laisser l'occasion à une mauvaise donnée de se faire enregistrée dans la base, si nous avons un champs qui doit porter M ou F, il faut jamais que l'application permette à une autre valeur de venir prendre la place ! et il ne faut jamais apprendre à quelqu'un d'une façon de lui faire admettre que ça base peut avoir une rendandance de données ou des données incorrectes qui ne doivent pas y être enregistrées, alors, il faut répondre en prenant en compte que les données sont bonne sur la base et faire la remarque qu'il faut faire attention pour contrôler les données le temps qu'on les introduise. [/QUOTE]
Mon cher frère, je ne suis pas contre les critique et reprises/corrections car nul n'est parfait, loin de là, mais avant d'avancer certaine remarques, veuillez consulter la question dans tous ses détails
1- l'utilisation du TEdit pour afficher le nombre ne vien pas de moi, mais c'est la réponse à la question dont il est stipulé que l'utilisateur veut les résultats dans Edit1, Edit2 et Edit3, même si je suis d'accord avec vous, les gens on besoin de commencer pas à pas quand même.
2- pour ce qui est d'ôter le filtre, je suis désolé mais ce n'est pas tellement nécessaire, nous avons déjà désactiver le filtrage et si on affect un nouveau filtre sans cumul (affectation directe) il va remplacer l'ancien tout simplement, et je l'ai déjà dit, il faut que les gens puissent avancer pas à pas, ne serait-ce que pour mieux métriser et apprécier les modes évolués puis avancer de la gestion de DB, je n'ai par exemple pas parlé des mode d'activation et de fermeture de la table avant fermeture du programme...etc
J'espère que vous comprenez que je ne vous attaque en rien, mais avant de courir il faut d'abaord apprendre à se dresser puis à marcher, et bien au contraire, ça me ferais bien plaisir de vous rencontrer si vous êtes au niveau d'alger, peut-être que nous pourrions trouver des projets communs. Salam
Amir_Kader غير متواجد حالياً  
رد مع اقتباس
قديم 02-05-2010, 02:13 PM
  #8
lila88
 
La spécialité: Autres
جامعة منتوري قسنطينة
تاريخ التسجيل: 06-09-2009
المشاركات: 164
lila88 عضو يستحق التميزlila88 عضو يستحق التميزlila88 عضو يستحق التميز
افتراضي رد: إلى amir_kader

بارك الله فيك و جزاك ألف خير
شرح واضح جدا ومفهوم
lila88 غير متواجد حالياً  
رد مع اقتباس
قديم 06-05-2010, 05:41 PM
  #9
يوسف الضادي
VIP_MEMBRE
 الصورة الرمزية يوسف الضادي
 
La spécialité: Informatique
جامعة ابن خلدون تيارت
تاريخ التسجيل: 17-08-2008
الدولة: تيارت/الرحوية
المشاركات: 5,333
يوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداعيوسف الضادي عضو محترف الابداع
افتراضي رد: إلى amir_kader

بارك الله فيكم
مناقشة جيدة و اجابة كافية شافية
بالتوفيق اخواني
__________________
أشهد أن لا اله الا الله وأن محمد رسول الله

يوسف الضادي غير متواجد حالياً  
رد مع اقتباس
قديم 11-05-2010, 09:43 AM
  #10
lila88
 
La spécialité: Autres
جامعة منتوري قسنطينة
تاريخ التسجيل: 06-09-2009
المشاركات: 164
lila88 عضو يستحق التميزlila88 عضو يستحق التميزlila88 عضو يستحق التميز
افتراضي رد: الترشيح في قواعد البيانات الدالفي

salam
merci pour tous ces proposotions
lila88 غير متواجد حالياً  
رد مع اقتباس
إضافة رد

الكلمات الدلالية (Tags)
amir_kader

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

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

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
مجموعة كتب في قواعد البيانات wailmira0129 برمجة المواقع وقواعد البيانات 7 13-01-2015 10:00 PM
تعلم قواعد البيانات MySQL houci منتــدى البرمجــة العـــام 1 29-12-2012 11:52 AM
البديل لكل قواعد البيانات annabil23 لغة الدالفي delphi 12 11-10-2010 07:16 PM
قواعد البيانات الديناميكية في الباسكال WADDAH لغة الدالفي delphi 2 07-10-2009 11:59 AM
كتاب في قواعد البيانات achraf.mouni الإعــلام الآلي والرياضيــات 2 07-04-2009 07:13 PM


الساعة الآن 12:19 PM.