منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : استعلام متقدم اجهدني
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم

عندي جدول مبيعات  فية عمود اسماء وعمود اجمالي المشتريات للعميل  
الجدول باسم CLIENT_
 الاعمدة الاسماء      CLIENTNAM_   والاجمالي  SALTOTPRIC_

محمد          3000
علي            4000
علي            2000
محمد          500
حسن          200


وجدول متحصلات ونقدية العملاء خاص بالدفع علي دفعات ممكن شخص يدفع واخر لم يدفع حتي الان
الجدول باسم DEBTABL_
الاعمدة باسم CLIENTNAM_   والدفعات باسم  CASHDE_

علي        2000
محمد       800
محمد       200

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

انا عايز اجمع  من جدول 1و2 الاسماء  تصبح بعمود واحد : جدول1   اجمالي المشتريات عمود 2  :
واجمالي الدفعات من الجدول 2   تصبح  عمود 3

الاستعلام يبقي بالشكل دة
الاسم         المشتريات       الدفعات


محمد           3500                1000
علي            6000                2000
حسن           200

الاستعلام الي استخدمتة وم ياتي بنتيجة معايا

كود :
  Dim cmd As OleDbCommand = New OleDbCommand("SELECT  CLIENT_.CLIENTNAM_,SUM(CLIENT_.SALTOTPRIC_) As [COUNT],SUM(DEBTABL_.CASHDE_)As [COUNT2] FROM CLIENT_   Join(DEBTABL_) on CLIENT_. CLIENTNAM_ = DEBTABL_.CLIENTNAM_  GROUP BY CLIENT_.CLIENTNAM_", con)
       con.Open()
       DataAdapterCOLLECTCLIEN = New OleDbDataAdapter(cmd)
       Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(DataAdapterCOLLECTCLIEN)
       DataSetCOLLECTCLIEN = New DataSet()
       DataAdapterCOLLECTCLIEN.Fill(DataSetCOLLECTCLIEN, "CLIENT_,DEBTABL_")
       DataGridView1.DataSource = DataSetCOLLECTCLIEN
       DataGridView1.DataMember = "CLIENT_,DEBTABL_"
       con.Close()
(31-03-18, 04:11 PM)محمد اسماعيل كتب : [ -> ]السلام عليكم

عندي جدول مبيعات  فية عمود اسماء وعمود اجمالي المشتريات للعميل  
الجدول باسم CLIENT_
 الاعمدة الاسماء      CLIENTNAM_   والاجمالي  SALTOTPRIC_

محمد          3000
علي            4000
علي            2000
محمد          500
حسن          200


وجدول متحصلات ونقدية العملاء خاص بالدفع علي دفعات ممكن شخص يدفع واخر لم يدفع حتي الان
الجدول باسم DEBTABL_
الاعمدة باسم CLIENTNAM_   والدفعات باسم  CASHDE_

علي        2000
محمد       800
محمد       200

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

انا عايز اجمع  من جدول 1و2 الاسماء  تصبح بعمود واحد : جدول1   اجمالي المشتريات عمود 2  :
واجمالي الدفعات من الجدول 2   تصبح  عمود 3

الاستعلام يبقي بالشكل دة
الاسم         المشتريات       الدفعات


محمد           3500                1000
علي            6000                2000
حسن           200

الاستعلام الي استخدمتة وم ياتي بنتيجة معايا

كود :
  Dim cmd As OleDbCommand = New OleDbCommand("SELECT  CLIENT_.CLIENTNAM_,SUM(CLIENT_.SALTOTPRIC_) As [COUNT],SUM(DEBTABL_.CASHDE_)As [COUNT2] FROM CLIENT_   Join(DEBTABL_) on CLIENT_. CLIENTNAM_ = DEBTABL_.CLIENTNAM_  GROUP BY CLIENT_.CLIENTNAM_", con)
       con.Open()
       DataAdapterCOLLECTCLIEN = New OleDbDataAdapter(cmd)
       Dim builder As OleDbCommandBuilder = New OleDbCommandBuilder(DataAdapterCOLLECTCLIEN)
       DataSetCOLLECTCLIEN = New DataSet()
       DataAdapterCOLLECTCLIEN.Fill(DataSetCOLLECTCLIEN, "CLIENT_,DEBTABL_")
       DataGridView1.DataSource = DataSetCOLLECTCLIEN
       DataGridView1.DataMember = "CLIENT_,DEBTABL_"
       con.Close()

السلام عليكم 
اخي محمد ارجو توضيح السؤال اكتر او وضع مثال علي ذالك وانا استخدمت هذا الكود من قبل مع قاعدة بيانات اكسس ولكن هناك تاخير قي استدعاء البيانات وشكرا
أرفق قاعدة البيانات أن امكن ليتم إنشاء جمة الإستعلام .

سهل علينا عملية المساعدة .
(31-03-18, 11:23 PM)عبدالله الدوسري كتب : [ -> ]أرفق قاعدة البيانات أن امكن ليتم إنشاء جمة الإستعلام .

سهل علينا عملية المساعدة .


انا مصممة ببرنامج كبير هعمل مثال بسيط وابعتة
جملة الإستعلام :
كود :
SELECT DISTINCT  CLIENT_.CLIENTNAM_,
(
SELECT SUM(C1.SALTOTPRIC_)
FROM CLIENT_ AS C1
WHERE C1.CLIENTNAM_ = CLIENT_.CLIENTNAM_
) AS Total_Purchases,

(
SELECT SUM(DEBTABL_.CASHDE_)
FROM DEBTABL_
WHERE DEBTABL_.CLIENTNAM_ = CLIENT_.CLIENTNAM_
) AS Total_Payments

FROM CLIENT_;


في ستكون هكذا :
كود :
Dim cmd As OleDbCommand = New OleDbCommand("SELECT DISTINCT  CLIENT_.CLIENTNAM_, (SELECT SUM(C1.SALTOTPRIC_) FROM CLIENT_ AS C1 WHERE C1.CLIENTNAM_ = CLIENT_.CLIENTNAM_) AS Total_Purchases, (SELECT SUM(DEBTABL_.CASHDE_) FROM DEBTABL_ WHERE DEBTABL_.CLIENTNAM_ = CLIENT_.CLIENTNAM_ ) AS Total_Payments FROM CLIENT_", con)
مثال بسيط ومعاة محاولة اخري مني بس النتيجة الجدول الثاني ظهر المجموع مضروب * تكرار الاسم لعدد مرات الجدول الاول

شرح المطلوب مرة اخري

عندي جدول مبيعات  فية عمود اسماء وعمود اجمالي المشتريات للعميل  
الجدول باسم CLIENT_
 الاعمدة الاسماء      CLIENTNAM_   والاجمالي  SALTOTPRIC_

محمد          3000
علي            4000
علي            2000
محمد          500
حسن          200


وجدول متحصلات ونقدية العملاء خاص بالدفع علي دفعات ممكن شخص يدفع واخر لم يدفع حتي الان
الجدول باسم DEBTABL_
الاعمدة باسم CLIENTNAM_   والدفعات باسم  CASHDE_

علي        2000
محمد       800
محمد       200

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

انا عايز اجمع  من جدول 1و2 الاسماء  تصبح بعمود واحد : جدول1   اجمالي المشتريات عمود 2  :
واجمالي الدفعات من الجدول 2   تصبح  عمود 3

الاستعلام يبقي بالشكل دة
الاسم         المشتريات       الدفعات


محمد           3500                1000
علي            6000                2000
حسن           200
هل جربت جملة الإستعلام في المشاركة رقم 5
http://vb4arb.com/vb/showthread.php?tid=...#pid116888
(01-04-18, 12:21 AM)عبدالله الدوسري كتب : [ -> ]هل جربت جملة الإستعلام في المشاركة رقم 5
http://vb4arb.com/vb/showthread.php?tid=...#pid116888


 انا استغربت المحتمل حضرتك وضعت الاجابة اثناء وضعي للمثال 

هجرب ورد علي حضرتك

نعم  جربت الان يعمل جيدا جزاك الله خيرا عني وعن غيري

طلب بسيط اخير لاني انا متعملتش مع الاستعلامات متقدمة بهذا الشكل

انا عايز من الجدول الثاني اضيف عمود اخر وهو   DEBTABL_.CASHTOT


مع جمع العمودين (_CASHDE_   +  SALTOTPRI) السابقين  وطرحهم من العمود دة

DEBTABL_.CASHTOT  وظهور الناتج بعمود اخر
أرجوا إعادة صياغة طلبك بشكل آخر :

أجد صعوبة في فهم ما تريد الوصول إليه
(01-04-18, 02:04 AM)عبدالله الدوسري كتب : [ -> ]أرجوا إعادة صياغة طلبك بشكل آخر :

أجد صعوبة في فهم ما تريد الوصول إليه

هوضح اكتر انا عايز اضيف  عامود اخر من جدول DEBTABL_    باسم CASHAD_

بحيث يصبح الشكل النهائي للاستعلام كالاتي

لاستعلام يبقي بالشكل دة

الاسم      1 المشتريات      2 الدفعات متحصلات     3   العمود الجديد ديون  قديمة     عمود اخر الصافي 4

محمد           5000                4000                         1000                                     2000
علي            6000                3000                        2000                                        5000
حسن           1000                1000                        500                                        500

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

يبقي العمود الجديد ديون سابقة من جدول DEBTABL_   اسم العمود بالجدول CASHAD_
عمود الصافي ناتج للعملية الاتية   (1 عمود المشتريات + 3العمود الجديد  ديون سابقة )- 2عمود الدفعات المتحصلة
الصفحات : 1 2