الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف لي تصفية قاعدة البيانات ب حقلين عن طريق البرنامج

مغلق
بدأه لمسة من الماضي في 26 أغسطس 2007 · 9 رد · 1,476 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخوتي اليكم مشكلتي

قاعدة البيانات هي : employeur.db

الحقول هي :Mat ;Nom,Prenom,fonction,Lieutrav,qualifi,collectif

اردت اثناء الطباعة ان يقوم البرنامج باعطائي قائمة العاملين حسب الحقول التالية lieutrav et qualifi et collectif

قمت انا بتهيئة الصفحة اي form8 فوضعت query1 et la datasourse و شكلت الصفحة بــــ les composant الخاصة بالغرض و بالنسبة لــــــquery1 وضعت الكود التالي

select*

from employeur.db

و انجزت بطاقة اخرى هي form6 بحيث وضعت عليها 03 edit و( button ( AFICHER

و سؤالي هو .........ما هو الكود اللازم لـــــ button aficher

بحيث عند التنفيذ علي ان املا les troix edit كالتالي

edit1 =10

edit2=C

edit3=ADM

و انقر على button aficher فيظهري البرنامج ما اريده

مثلا اريد ان اظهر كل العمال الذين يعملون في الفرع 10 اي ........lieutrav = 10 و لهم الخاصية C ايC =qualifi و هم من الصنف ADM اي COLECTIF=ADM

تم تعديل هذه المشاركة بواسطة B.M.AbdelAziZ في 26 أغسطس 2007 في 17:33

لمســــــــــ من المــــــاضــــي ــــــــــــة

#2

بسم الله الرحمن الرحيم

هناك حلان:

الأول .... عمل فلترة لل query1 أي :

Query1.Filter=Format('(lieurtrav=''%s'')and(qualifi=''%s'')and(colectif=''%s'')',[edit1.text,edit2.text,edit3.text]);
Query1.Filtered := true;

الحل الثاني....تغيير select تبع الـ query1 أي :

select *
from employeur.db
where (lieutrav =:lieu)and(qualifi=:qualif)and(colectif=:col)

ثم عند التشغيل تحدد المتغيرات

lieu, quali, col

query1.Paramname('lieu').Astring := edit1.text;

وهلم جرا

ملاحظة: مرتادو المنتدى أغلبيتهم ذوو ثقافة انجليزية لذا يستحسن استعنال المفردالت الانجليزية بدل الفرنسية هذا لتعم الفائدة...(للعلم فأنا مفرنس :) ....

تم تعديل هذه المشاركة بواسطة DelphiCoder في 26 أغسطس 2007 في 15:50

1141068814.gif

It doesn't matter how slow you go, as long as you don't stop

#3

الاخ دالفي كودر ...............

اولا اشكرك على الرد و التفاعل مع طرح مشكلتي ...........

ثانيا ..........سوف اجرب الحل هذا المساء و اعاود الاتصال بك غدا

ثالثا ان شاء الله ساحاول ان تكون تدخلاتي بالاجليزية لان بكل بساطة اتعامل مع دالفي بالفرنسية

رابعا يظهر اني ساتعبك معي لان في تساؤلات كثير لانهاء مشروعي .......

و لك مني الشكر الجزيل لانك جعلتني اتفاءل خيرا بالمنتدى بعدما يئست ..........

لمســــــــــ من المــــــاضــــي ــــــــــــة

#4

للاسف اخي الكريم ........طبقت الكودين لكن لا نتيجة

و اليك الكود الاذي استعملته مع حقل واحد في التصفية و كان ناجح ........فلربما تقدر تساعدني في تحسينه ....اي اضافة الحقلين الاخرين

الكود........

begin

form8.query1.sql.clear;

;(*form8.query1.sql.add('select

;(form8.query1.sql.add('from employeur.DB')

if (radiobutton2.checked)and(edit1.text<>'') then

Form8.Query1.sql.add('where lieutrav='+chr(39)+edit1.text+chr(39

form8.query1.active:=true

form8.quickrep1.preview

و كانت النتيجة عرض لي العمال الذين هم من الصنف 10 فقط مثلا لما قمت بالتنفيذ و ادخلت رقم 10 في edit21.text

اذن كيف لي تعديل الكود بادراج حقلين اخرين للتصفية كما ورد في سؤالي السابق الحقلان هما qualifi et collectif عن طريق edit2.text et edit3.text

انتظر مساعدتك في اقرب فرصة

لمســــــــــ من المــــــاضــــي ــــــــــــة

#5

بسم الله الرحمن الرحيم

سأجيبك هذا المساء إن شاء الله

1141068814.gif

It doesn't matter how slow you go, as long as you don't stop

#6

في المرفقات برنامج بسيط انتزعت لك الجزء اللذي ترغبين معرفته فيه

فيه فرز حسب حوالي 10 حقول

أظن تستطيعين أستخراج ما ترغبين بالتحديد

آسف لعدم أيراد كامل كود البرنامج داخله أوردت الكود الخاص بهذه الحالة فقط

SOURCE.rar

تم تعديل هذه المشاركة بواسطة decompiler في 27 أغسطس 2007 في 19:09

#7

بسم الله الرحمن الرحيم

begin
  with Form8 do
  begin
	with Query1 do
	begin
	  SQL.Clear;
	  SQL.Add('select *');
	  SQL.Add('from Employeur.DB');
	  SQL.Add('where (1=1)');
	  if ( (RadioButton2.Checked) and (Edit1.Text <> '') ) then
		SQL.Add('and (lieutrav='+chr(39)+Edit1.Text+chr(39)+')');

	  if ( (RadioButton3.Checked) and (Edit2.Text <> '') ) then
		SQL.Add('and (qualifi='+chr(39)+Edit2.Text+chr(39)+')');

	  if ( (RadioButton4.Checked) and (Edit3.Text <> '') ) then
		SQL.Add('and (colectif='+chr(39)+Edit3.Text+chr(39)+')');

	  Active := true;
	end;
	QuickRep1.Preview;
  end;
end;
1141068814.gif

It doesn't matter how slow you go, as long as you don't stop

#8
DelphiCoder كتب:
<br />بسم الله الرحمن الرحيم<br /><br />
begin<br />
  with Form8 do<br />
  begin<br />
    with Query1 do<br />
    begin<br />
      SQL.Clear;<br />
      SQL.Add('select *');<br />
      SQL.Add('from Employeur.DB');<br />
      SQL.Add('where (1=1)');<br />
      if ( (RadioButton2.Checked) and (Edit1.Text <> '') ) then<br />
        SQL.Add('and (lieutrav='+chr(39)+Edit1.Text+chr(39)+')');<br />
<br />
      if ( (RadioButton3.Checked) and (Edit2.Text <> '') ) then<br />
        SQL.Add('and (qualifi='+chr(39)+Edit2.Text+chr(39)+')');<br />
<br />
      if ( (RadioButton4.Checked) and (Edit3.Text <> '') ) then<br />
        SQL.Add('and (colectif='+chr(39)+Edit3.Text+chr(39)+')');<br />
<br />
      Active := true;<br />
    end;<br />
    QuickRep1.Preview;<br />
  end;<br />
end;

<br />

<br /><br /><br />

و كالعادة اخي الكريم ساحاول ان اطبق هذا الكود في هذا المساء في البيت و غدا بحول لله ارد لك الجواب و ان شاء الله اوفق

و لا يسعني الا ان اشكرك اخي الكريم

على فكرة انا اتواصل معكم عن طريق نت العمل

و البرنامج على جهازي في البيت ........

لمســــــــــ من المــــــاضــــي ــــــــــــة

#9

و كانت لي النتيجة لما استعملت الكود........لكن فقط قمت بالتعديل لان في اول الامر لم ينفذ البرنامج فقمت بحذفت فكرة les RadioButton و استعملت فقط les edits

و الحمد لله استطعت ان اقوم بالتصفية من خلال ثلاث حقول

لكن بقي عندي استفسار اخر ان امكن

و هو

اني اريد ان اقوم بطباعة التقارير و تكون كمايلي

مثلا ......في نفس الصفحة اريد

ان يكون لي تقرير الاول مثلا خاص بالعمال الذين هم من الحقلالاول = 10 و الحقل الثاني =C و الحقل الثالث =ADM

و التقرير الثاني مثلا بالشكل التالي العمال .....الحقل الاول =10 و الحقل الثاني =M و الحقل الثالث = ADM

و هكذا ...........

اي اريد ان اعمل هاته التقارير من خلال FORM واحدة

فهل ذا يمكن و ما هو الكود المناسب .......

اتمنى ان لا اكون قد اثقلت عليكم .

لمســــــــــ من المــــــاضــــي ــــــــــــة

#10

بسم الله الرحمن الرحيم

begin
  with Form8 do
  begin
	with Query1 do
	begin
	  SQL.Clear;
	  SQL.Add('select *');
	  SQL.Add('from Employeur.DB');
	  SQL.Add('where (1=1)');
	  if ( (RadioButton2.Checked) and (Edit1.Text <> '') ) then
		SQL.Add('and (lieutrav='+chr(39)+Edit1.Text+chr(39)+')');

	  if ( (RadioButton3.Checked) and (Edit2.Text <> '') ) then
		SQL.Add('and (qualifi='+chr(39)+Edit2.Text+chr(39)+')');

	  if ( (RadioButton4.Checked) and (Edit3.Text <> '') ) then
		SQL.Add('and (colectif='+chr(39)+Edit3.Text+chr(39)+')');

	SQL.Add('group by lieutrav,qualifi,colectif);
	  Active := true;
	end;
	QuickRep1.Preview;
  end;
end;

بهذه الطريقة سيتم تجميع البيانات حسب المواصفات التالية :

lieutrav,qualifi,colectif

ثم في التقرير يجب عليك إضافة groupband حسب رغبتك

يعني تجميع البيانات المطبوعة حسب مكان العمل أو الدرجة أو المجموعة أو كل ذلك

الخلاصة: يجب التجميع في أمر SQL ونفس الشيء في التقرير بنفس الرغبات

1141068814.gif

It doesn't matter how slow you go, as long as you don't stop

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…