تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
استعلام بشرط محدد
#1
السلام عليكم ورحمة الله 

اود ان اتقدم لكافة اعضاء هذا المنتدى على مجوداتهم الجبارة وخاصة الاخ asemshahen5

الطلب هو ان ابحث اختار تاريخ البداية وتاريخ النهاية ويبحث فى العمود XDATE فى التاريخ المذكور
بشرط ان يكون عمر الشخص 20 عام 

صورة توضحية
مثلا اريد كل من هو من شهر 1/1/2019 حتى 30/1/2019 وشرط ان يكون عمرة 20 سنة يعرضة فى dataGridView1
 
وشكرا لكم

الرد
تم الشكر بواسطة: elgokr , elgokr
#2
وعليكم السلام ورحمة الله وبركاته
مرحباً اخى issamsaidd

جزاك الله خيراً على الكلمة الطيبة فى حق الغير
فبارك الله لك فى حسن كلمتك الطيبة وزادك الله من خيره

بخصوص كود البحث فقط  كل الامر ان تجعل الاستعلام بهذا الشكل
كود :
SELECT * FROM mytable WHERE xdate Between #01/08/1980# And #31/01/2000# AND Date() >= DateAdd("yyyy", 20,  xdate)

الان كل ما عليك هو 
1- استبدال الـ 01/08/1980 بالتاريخ البداية وليكن CDate(textBox1.text)
2- استبدال الـ 31/01/2000 بالتاريخ النهاية وليكن CDate(textBox2.text)
3- استبدال رقم 20 بالرقم عدد السنوات وليكن بـ textBox3.txt

وستجد النتائج معك تعمل بدون اى مشكلة
مرفق قاعدة بيانات تحتوى على جدول تواريخ مختلفة وكذلك query لاختبار نتيجة الاستعلام

تحياتى لك
وتمنياتى لك التوفيق


الملفات المرفقة
.zip   database.zip (الحجم : 329.86 ك ب / التحميلات : 12)
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
تم الشكر بواسطة: issamsaidd , ابراهيم ايبو , حريف برمجة
#3
اخى الكريم شكرا لك ولكن انا اريد ان يعرض الفترة التاريخة من العمود XDATE  ويعرض العمر المحدد من العمود xage ويضعهم فى dataGridView1
مثلا هذا الكود بحث بين تاريخن كيف لى ان اضيف عمود العمر لهم 
كود :
try
               {
                   // البحث
                   OleDbDataAdapter da = new OleDbDataAdapter("select * from issam where XDATE  between @sd and @sf", con);
                   da.SelectCommand.Parameters.AddWithValue("@sd",dtp1.Value.ToString("dd/MM/yyyy"));
                   da.SelectCommand.Parameters.AddWithValue("@sf", dtp2.Value.ToString("dd/MM/yyyy"));
                   DataTable dt = new DataTable();
                   da.Fill(dt);
                   dataGridView1.DataSource = dt;

               }
               catch (Exception ex)
               {
                   MessageBox.Show(ex.Message);
                   con.Close();
               }
الرد
#4
الشكر لله والحمد لله
والحمد لله على كل حال

بما انك لديك عمود محدد به العمر فكل ما عليك ان تجعل الكود بهذا الشكل
كود :
            try
           {
               // البحث
               OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM mytable WHERE xdate Between @sd And @sf AND xage >= $xg", con);
               da.SelectCommand.Parameters.AddWithValue("@sd", dtp1.Value.ToString("dd/MM/yyyy"));
               da.SelectCommand.Parameters.AddWithValue("@sf", dtp2.Value.ToString("dd/MM/yyyy"));
               da.SelectCommand.Parameters.AddWithValue("@xg", dtp3.Value.ToString());
               DataTable dt = new DataTable();
               da.Fill(dt);
               dataGridView1.DataSource = dt;
               dataGridView1.Refresh();
           }

بخصوص هذا الجزء
PHP كود :
dtp3.Value.ToString() 

استبدله بالقيمة التى تخص العمر

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#5
(17-10-19, 06:29 PM)elgokr كتب :
الشكر لله والحمد لله
والحمد لله على كل حال

بما انك لديك عمود محدد به العمر فكل ما عليك ان تجعل الكود بهذا الشكل
كود :
            try
           {
               // البحث
               OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM mytable WHERE xdate Between @sd And @sf AND xage >= $xg", con);
               da.SelectCommand.Parameters.AddWithValue("@sd", dtp1.Value.ToString("dd/MM/yyyy"));
               da.SelectCommand.Parameters.AddWithValue("@sf", dtp2.Value.ToString("dd/MM/yyyy"));
               da.SelectCommand.Parameters.AddWithValue("@xg", dtp3.Value.ToString());
               DataTable dt = new DataTable();
               da.Fill(dt);
               dataGridView1.DataSource = dt;
               dataGridView1.Refresh();
           }

بخصوص هذا الجزء
PHP كود :
dtp3.Value.ToString() 

استبدله بالقيمة التى تخص العمر

تحياتى لك
وتمنياتى لك التوفيق

شكرا لك ولكن عند الاستعلام يتم اخفاء ما بداخل شبكة الدتا جريد فيو الكود للتاكد بعد وضع اسماء الجدول
كود :
           try
           {
               // البحث
               OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM issam where XDATE Between @sd And @sf AND xage >= xg", con);
               da.SelectCommand.Parameters.AddWithValue("@sd", dateTimePicker2.Value.ToString("dd/MM/yyyy"));
               da.SelectCommand.Parameters.AddWithValue("@sf", dateTimePicker3.Value.ToString("dd/MM/yyyy"));
               da.SelectCommand.Parameters.AddWithValue("@xg", textBox6.Text);
               DataTable dt = new DataTable();
               da.Fill(dt);
               dataGridView1.DataSource = dt;
               dataGridView1.Refresh();

           }
           catch (Exception ex)
           {
               MessageBox.Show(ex.Message);
               con.Close();
           }
الرد
تم الشكر بواسطة: ابراهيم ايبو , حريف برمجة
#6
الشكر لله والحمد لله 
والحمد لله على كل حال

فقط قم بوضه كود اسماء الاعمدة اسفل هذا السطر
كود :
dataGridView1.Refresh();

وسيكون الاسماء تعرض كما كانت لكون البحص هنا كما لو تقوم بعمل لود للفورم من جديد
ولكن بنتائج استعلام خاصة البحث اجعل لود الداتا جريد فى function لوحده وكذلك البحث فى function
واعمل شرط تحقق اذا كان textBox البحث فارغ يعود بـ function الخاص باللود الافتراضى واذا كان بنتائج يقوم بعرض function البحث

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#7
(17-10-19, 07:12 PM)elgokr كتب :
الشكر لله والحمد لله 
والحمد لله على كل حال

فقط قم بوضه كود اسماء الاعمدة اسفل هذا السطر
كود :
dataGridView1.Refresh();

وسيكون الاسماء تعرض كما كانت لكون البحص هنا كما لو تقوم بعمل لود للفورم من جديد
ولكن بنتائج استعلام خاصة البحث اجعل لود الداتا جريد فى function لوحده وكذلك البحث فى function
واعمل شرط تحقق اذا كان textBox البحث فارغ يعود بـ function الخاص باللود الافتراضى واذا كان بنتائج يقوم بعرض function البحث

تحياتى لك
وتمنياتى لك التوفيق


شكرا جزيلا لك تم حل المشكله بنجاح
السورس كود للاخوة الاعضاء للاستفادة 
السورس كود
استفاء اخير هل يمكن عرض الاسماء ان اخر واحد اضيفة يظهر اول واحد فى dataGridView1

الرد
تم الشكر بواسطة: ابراهيم ايبو , حريف برمجة
#8
استفسار اخير هل يمكن عرض الاسماء ان اخر واحد اضيفة يظهر اول واحد فى dataGridView1
الرد
تم الشكر بواسطة: ابراهيم ايبو , حريف برمجة
#9
الشكر لله والحمد لله
والحمد لله على كل حال

بخصوص الاستفسار فقط اضف هذه الجملة الى اخر الاستعلام
كود :
ORDER BY xid DESC


بحيث الشكل سيكون بهذا الشكل
كود :
"SELECT * FROM mytable WHERE xdate Between @sd And @sf AND xage >= $xg ORDER BY xid DESC"

تعني كلمة DESC ترتيب تنازلي و ASC تعني العكس وهى تنازلى يمكنك 
ايضاً جعلها بدون الكلمة وهو تلقائي سيعتبرها ASC

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#10
الف شكر لك ولكن انا استفسارى ما فى طريقة لقلب الدتا جريد فيو با الكامل اخر واحد يضاف اول واحد يكون اول واحد بعد الاضافة او حتى فى الاتسعلام
مع العلم ان المفتاح الاساسى اسمة XID وشكرا لك على ما قدمتة ♥
الرد
تم الشكر بواسطة: حريف برمجة



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


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