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

ما العيب في أمر SQL هذا

مغلق
بدأه الصقر25 في 14 أبريل 2002 · 10 رد · 1,058 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أريد تجميع بيانات الموظف لطباعة تقرير البيانات الشاملة له باستخدام أداة التقارير DATAREPORT بالصيغة التالية :

Set rs = conn.Execute("SELECT AllEsT.*, dwrat.*, eshraf.*, tkrim.*, THistory.* FROM AllEsT, dwrat, eshraf, tkrim, THistory WHERE AllEsT.Haweiah = '" & Text1 & "' AND dwrat.Haweiah = AllEsT.Haweiah AND eshraf.Haweiah = AllEsT.Haweiah AND tkrim.Haweiah = AllEsT.Haweiah AND THistory.Haweiah = AllEsT.Haweiah")

علما أن الجداول الاربعة الأخيرة تحتوي على أكثر من سجل للموظف الواحد .

أرجو المساعدة جزاكم الله خير .:rolleyes:

#2

حاول ان تعمل الجملية بدون تحديد انا جربتها و نفعت

select * from t1,t2,t3,t4 where conditionns

#3

شكر أخي العائد على الرد ولكن جربت الطريقة السابقة و كانت تعطي رسالة خطأ و جربت أكثر من طريقة و لا أدري ما السبب . فأين الخطأ ؟

أولا:

sqlRpt = "SELECT * FROM AllEsT WHERE Haweiah = '" & Text1 & "'"

sqlRpt = sqlRpt + " AND " + "SELECT * FROM dwrat WHERE Haweiah = '" & Text1 & "'"

sqlRpt = sqlRpt + " AND " + "SELECT * FROM eshraf WHERE Haweiah = '" & Text1 & "'"

sqlRpt = sqlRpt + " AND " + "SELECT * FROM tkrim WHERE Haweiah = '" & Text1 & "'"

sqlRpt = sqlRpt + " AND " + "SELECT * FROM THistory WHERE Haweiah = '" & Text1 & "'"

ثانيا:

Set rs = conn.Execute("SELECT * FROM AllEsT, dwrat, eshraf, tkrim, THistory WHERE AllEsT.Haweiah = '" & Text1 & "' AND dwrat.Haweiah = '" & Text1 & "' AND eshraf.Haweiah = '" & Text1 & "' AND tkrim.Haweiah = '" & Text1 & "' AND THistory.Haweiah = '" & Text1 & "'")

علماً أن رسالة الخطأ التي تظهر لي تفيد بأن أداة التقارير لم تجد أول حقل في أول جدول و هو موجود !

كما أنني أستعرض التقرير الخاص بجدول واحد يظهر بشكل جيد تمام و لكن لعدة جداول مرتبطة لا يظهر فهل هناك جملة تضاف الى جمل الإتصال بقاعدة البيانات مثلا التالية :

Set conn = New ADODB.Connection

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=" & App.Path & "AllEstT.mdb;" & _

"Persist Security Info=False"

أفيدوني جزاكم الله خير .

#4

اخي الكريم جرب هذا إن شاء الله يعمل

'" & text1.text & "' "استخدم هذه الطريقة عندما تكون بيانات الشرط رقمية أو عددية في قاعدة البيانات للحقل نفسة

" & text1.text & " "استخدم هذه الطريقة عندما تكون بيانات حقل الشرط من نوع البيانات الحرفية في قاعدة البيانات للحقل نفسة

تحياتي

اخوك فهد

#5

المشكلة كما في الكود الذي كتبتماة و لكن انا اعتذر من الاخ فهد

استخدم في الحقول العددية

" & text1.text & "

الحقول التي من نوع الحروف string

' " & text1.text & " '

#6

السلام عليكم و رحمة الله و بركاته

أشكر لكم حسن تجاوبكم معي و فقنا الله جميعا لما يحب و يرضى

و أتمنى منك أخي العائد و أنت أخي فهد و جميع الأخوة الرواد لهذا المنتدى الرائع و الفيد جدا لنا جميعا أن توضحوا أو تشرحوا لي متى نستخدم الأمر Group by و الأمر Union و هل يمكن أستخدام الأمرين أو أحدهما في حالتي هذه ؟

و جزاكم الله خير .

(clock)

#7

الامر union i هو امر للتحاد هذا الامر نستخدمة اذا كان لدينا مجموعة من ال records و اريد احضارها و لكن لا استطيع ان احضرها جميعا على نفس record set كمثال اريد ان احضر على تقرير كمثال المواد التي تدرس لصف و هذة المواد تقسم اختياري و اجباري و اريد ان يظهر لي على اللست المواد الاجبارية ثم المواد الاختيارية فاعمل جملتين select

select subject_name from table where mat_no=1

union

select subject_name from table where mat_no=2

اما الامر group by فهو امر يستخدم اذا اردت ان اعمل كمثال استعلام عن شيئ و لا اريدة ان يتكرر و اريد ان يظهر بشكل منظم مثل

رقم الطالب و الماواد التي درسها و اعطيك شكل ظهورها بالارقام و هذا بشكل غير منظم

رقم الطالب و رقم المادة

1 1

1 2

1 3

1 4

هذا يعبر ان الطالب رقم 1 اخذ المواد 1 2 3 4 ولكن جروب بي تجعلة هكذا

select student_no ,subject_no from table where الشرط الذي تريدة group by student_no

1 1

2

3

4

#8

شكرا على ملاحظتك اخي العائد ... كانت غلطة مطبعية (كما يقال)

وشكرا على شرحك للـunion & group by

#9

مشكور أخي العائد على سرعة الرد و التفصيل الجميل زادك الله علما و تقوى و لي سؤال لو سمحت لي .

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

1- جدول البيانات الأساسية للموظف

2- جدول الدورات التي حصل عليها الموظف خلال فترة عمله

3- جدول الأنشطة التي قام بها الموظف ( وهي أكثر من سجل لكل موظف)

4- جدول الخطابات التكريمية التي حصل عليها الموظف

5 - جدول البيانات التاريخية التي جمعها البرنامج عن الموظف و هي سجلات بعدد سنوات خدمة الموظف

وهذا كله في تقرير واحد عند يطلب المدير الاستفسار عن موظف ما.

جزاك الله خير :rolleyes:

#10

انتا تطلب احضار الداتا من خمس جداول و طلبك سهل جدا لان الجداول الخمس كلها لها نفس ال key الذي هو رقم الموظف حيث ان الجميع مربوطين علية

لذلك انتا احضر الجملة كما يلس

select takreem,al-byanat,al-dawrat,any information

from table1,table2, tabl3,table4

where table1.emp_no=table2.emp_no and

table2.emp_no=table3.emp_no

وتعملها لكل الجداول التي تريد ان تحضر منها البيانات و اذا اردت ابعث لي الجداول و انا اعمل الجملة و ارسلها لك

واهلا بكم في اي وقت

#11

السلام عليكم و رحمة الله و بركاته

جزاك الله خير ما قصر أخي العائد سوف أرسل لك الداتا بيس قريباً بإذن الله و لكن هل تتخيل معي الجدول الناتج كيف يكون شكله أنا لا أخفيك أنني لا أتصور أنه ممكن إلا ببيانات مكررة لمعلومات الموظف مع كل سجل دورة و سجل خطاب أو غيره ... و هذا غير أن التقرير سوف يكون كبير الى حد غير معقول للمظف الواحد .

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

جزاك الله خير جرب معي النتيجة و سوف ارسل الجداول في أقرب وقت ممكن (clock)

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

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