اريد دمج استعلامين - بسام محمدغانم - 08-11-21
السلام عليكم
اريد دمج استعلامين
الاول
كود :
SELECT Accounting_Manual.Account_No, Accounting_Manual.Account_Name, coins.coins_code
FROM Accounting_Manual LEFT JOIN coins ON Accounting_Manual.coins_No = coins.coins_no
WHERE Accounting_Manual.Rank = 5 AND coins.Active = True AND Accounting_Manual.Account_Stop = False
الثاني
كود :
SELECT Cost_Center.Center_No, Cost_Center.Center_Name
FROM Currency_Directory, Cost_Center
where cost_center.center_no= ( SELECT max(center_no) from cost_centre where type_center_main_sub=2 and stop_center=0 )
RE: اريد دمج استعلامين - Anas Mahmoud - 08-11-21
ماذا تعني بدمج استعلامين ؟ ما هي النتيجة التي تتوقعها ؟
اعطي مثال على شكل الجدول الناتج مثلا
RE: اريد دمج استعلامين - بسام محمدغانم - 08-11-21
(08-11-21, 02:37 AM)Anas Mahmoud كتب : ماذا تعني بدمج استعلامين ؟ ما هي النتيجة التي تتوقعها ؟
اعطي مثال على شكل الجدول الناتج مثلا
شوف بي اكسس كيف دمج هم
كود :
SELECT Currency_Directory .*, Cost_Center.Center_No, Cost_Center.Center_Name
FROM Currency_Directory, Cost_Center
where cost_center.center_no= ( SELECT max(center_no) from cost_centre where type_center_main_sub=2 and stop_center=0 )
تم دمج الاستعلام الأول و جعل له اسم مستعار باسم Currency_Directory يذهب و ينفذ الاستعلام الأول ثم يظهر النتيجة لكلا الاستعلامين
انا اريد ان اضع بدل Currency_Directory الاستعلام كامل
RE: اريد دمج استعلامين - Anas Mahmoud - 08-11-21
كود :
SELECT Currency_Directory.*, Cost_Center.Center_No, Cost_Center.Center_Name
FROM (SELECT Accounting_Manual.Account_No, Accounting_Manual.Account_Name, coins.coins_code
FROM Accounting_Manual LEFT JOIN coins ON Accounting_Manual.coins_No = coins.coins_no
WHERE Accounting_Manual.Rank = 5 AND coins.Active = True AND Accounting_Manual.Account_Stop = False) as Currency_Directory, Cost_Center
where cost_center.center_no= ( SELECT max(center_no) from cost_center where type_center_main_sub=2 and stop_center=0 )
مع نصيحتي بعدم استخدام استعلام معقد بهذ الشكل انما استخدام استعلامات منفصلة
RE: اريد دمج استعلامين - بسام محمدغانم - 09-11-21
(08-11-21, 12:14 PM)Anas Mahmoud كتب :
كود :
SELECT Currency_Directory.*, Cost_Center.Center_No, Cost_Center.Center_Name
FROM (SELECT Accounting_Manual.Account_No, Accounting_Manual.Account_Name, coins.coins_code
FROM Accounting_Manual LEFT JOIN coins ON Accounting_Manual.coins_No = coins.coins_no
WHERE Accounting_Manual.Rank = 5 AND coins.Active = True AND Accounting_Manual.Account_Stop = False) as Currency_Directory, Cost_Center
where cost_center.center_no= ( SELECT max(center_no) from cost_center where type_center_main_sub=2 and stop_center=0 )
مع نصيحتي بعدم استخدام استعلام معقد بهذ الشكل انما استخدام استعلامات منفصلة
الاستعلامات المنفصلة و المخزنة لا استطيع تطبيق بعض الشروط او ارسال برميترات لها
لا اعرف كيف لو تعمل لي مثال بمرفق بكون لك شاكر بعد الله
RE: اريد دمج استعلامين - Anas Mahmoud - 09-11-21
سأخبرك بالطريقة ان شاء الله
ستقوم بتصميم الاستعلامات بشكل منفصل كما اخبرتك سابقا
وكلما احتجت ان تضيف قيم الى شرط معين (برامتر ) اضف متغير بهذا الشكل مثلا [a] لا يهم الاسم فعلا المهم ان كل البرامترات تكون باسامي مختلفة
[attachment=27184]
[attachment=27185]
الان نأتي في الكود ونقوم بعمل الاستعلام بشكل طبيعي ومن ثم نضيف البرامترات
كود :
Dim dt As New DataTable
Using conn As New OleDbConnection(ConnectionString)
Using cmd As New OleDbCommand("Select * from MasterQuery", conn)
Using da As New OleDbDataAdapter(cmd)
cmd.Parameters.AddWithValue("param1", 1)
cmd.Parameters.AddWithValue("param2", "Qatari Ryal")
da.Fill(dt)
End Using
End Using
End Using
DataGridView1.DataSource = dt
لاحظ ان الاسم غير مهم اطلاقا المهم هو الترتيب
[attachment=27186]
وكذلك ليس شرطا ان تكون البرامترات كلها في استعلام واحد بل حتى لو كانت في الاستعلامات الفرعية
[attachment=27188]
[attachment=27187]
قمت بتعديل PopulateDataGridView للتسهيل مثل هذا الامر
كود :
Sub PopulateDataGridView(dgv As DataGridView, query As String, ParamArray params() As Object)
Dim dt As New DataTable
Using conn As New OleDbConnection(ConnectionString)
Using cmd As New OleDbCommand(query, conn)
Using da As New OleDbDataAdapter(cmd)
For Each p In params
cmd.Parameters.AddWithValue("param", p)
Next
da.Fill(dt)
End Using
End Using
End Using
dgv.DataSource = dt
End Sub
الان الاستخدام سهل جدا
كود :
PopulateDataGridView(DataGridView1, "Select * from MasterQuery", "1", "Qatari Ryal")
لو اعطيتني تفاصيل الجداول ربما استطعنا تبسيط الاستعلامات وتجزيئها ان شاء الله
RE: اريد دمج استعلامين - بسام محمدغانم - 10-11-21
(09-11-21, 12:47 PM)Anas Mahmoud كتب : سأخبرك بالطريقة ان شاء الله
ستقوم بتصميم الاستعلامات بشكل منفصل كما اخبرتك سابقا
وكلما احتجت ان تضيف قيم الى شرط معين (برامتر ) اضف متغير بهذا الشكل مثلا [a] لا يهم الاسم فعلا المهم ان كل البرامترات تكون باسامي مختلفة
الان نأتي في الكود ونقوم بعمل الاستعلام بشكل طبيعي ومن ثم نضيف البرامترات
كود :
Dim dt As New DataTable
Using conn As New OleDbConnection(ConnectionString)
Using cmd As New OleDbCommand("Select * from MasterQuery", conn)
Using da As New OleDbDataAdapter(cmd)
cmd.Parameters.AddWithValue("param1", 1)
cmd.Parameters.AddWithValue("param2", "Qatari Ryal")
da.Fill(dt)
End Using
End Using
End Using
DataGridView1.DataSource = dt
لاحظ ان الاسم غير مهم اطلاقا المهم هو الترتيب
وكذلك ليس شرطا ان تكون البرامترات كلها في استعلام واحد بل حتى لو كانت في الاستعلامات الفرعية
قمت بتعديل PopulateDataGridView للتسهيل مثل هذا الامر
كود :
Sub PopulateDataGridView(dgv As DataGridView, query As String, ParamArray params() As Object)
Dim dt As New DataTable
Using conn As New OleDbConnection(ConnectionString)
Using cmd As New OleDbCommand(query, conn)
Using da As New OleDbDataAdapter(cmd)
For Each p In params
cmd.Parameters.AddWithValue("param", p)
Next
da.Fill(dt)
End Using
End Using
End Using
dgv.DataSource = dt
End Sub
الان الاستخدام سهل جدا
كود :
PopulateDataGridView(DataGridView1, "Select * from MasterQuery", "1", "Qatari Ryal")
لو اعطيتني تفاصيل الجداول ربما استطعنا تبسيط الاستعلامات وتجزيئها ان شاء الله
اشكررررررررررررررررررررررررررررررررررررك جداااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااا
|