لدي تقرير كريستال ريبورت 10 يعرض كافة حقول جدول معين، كيف يمكنني من داخل الفيجوال بيسك تحديد شرط استعلام ليظهر ناتجه في نفس التقرير؟
كأن يكون الشرط ( رقم القسم = 10 ) أو( اسم الموظف = محمد ) وهكذا؟
بانتظار آرائكم العاجلة :wacko:
وشكرا
لدي تقرير كريستال ريبورت 10 يعرض كافة حقول جدول معين، كيف يمكنني من داخل الفيجوال بيسك تحديد شرط استعلام ليظهر ناتجه في نفس التقرير؟
كأن يكون الشرط ( رقم القسم = 10 ) أو( اسم الموظف = محمد ) وهكذا؟
بانتظار آرائكم العاجلة :wacko:
وشكرا
معقول لا يوجد أحد واجهته نفس المشكلة؟؟؟؟؟؟؟؟؟؟؟
هل تستخدمين التقارير من داخل الفيجوال مثل الداتا ريبورت أم منفصلة
إذا كانت مبنية داخل الفيجوال مثل الداتا ريبورت فعملية الفلترة لا تختلف كثيرا عن الداتا ريبورت أما إذا كانت خارج الفيجوال أي بملف مستقل يحمل لاحقة rpt فأعتذر لا يمكنني الاجابة عليه
من داخل الفيجوال بنفس طريقة الداتا ريبورت عن طريق الأسكيوال فقط
تحياتي
OMANI FOR EVER
-------------------------------------------------

-------------------------------------------------
أخي omani شكرا على الرد
ولكن أرجو منك توضيح طريقة
اقتباسإذا كانت مبنية داخل الفيجوال
كيف تكون تقارير الكريستال مبنية داخل الفيجوال بيسك كما ذكرت؟؟؟؟
أختي الكريمة بالنسبة لتقارير الكريستال المبنية داخل الفيجوال هي نفس تقارير الداتا ريبورت تقربا ولكن بإمتيازات تحكم أفضل بكثيير من الداتا ريبورت وتضاف من قائمة Project ستجدين تبويب الكريستال ريبورت من ضمن القائمة والصورة التالية توضح الطريقة :
أتمنى أن تكون تفي بالغرض .
ولكيفية التعامل معها فالأخ Major له ابداعات متميزة لشرح الكريستال ريبورت وكيفية التعامل معه بسلسلة دروس مكونة من ثلاثة عشر درسا تجدينها هنا :
وهنا شرح لبيئة التصميم من داخل الفيجوال
ونصيحتي لك بأن تتابعي هذه السلسلة من الدروس ولن تحتاجي بعدها لأي مساعدة لتصبحي محترفة في الكريستال
تم تعديل هذه المشاركة بواسطة omani في 16 سبتمبر 2005 في 12:24
OMANI FOR EVER
-------------------------------------------------

-------------------------------------------------
الأخ omani
معذرة على الازعاج ولكنني لازلت غير قادرة على ربط تقرير كريستال بالفيجوال ومن ثم الاستعلام
من نفس التقرير
ذكرت لي بأنه اذا تم الربط من داخل الفيجوال فسيكون نفس الطريقة الخاصة بالداتا ريبورت
كيف ذلك؟
مثلا عند الربط بالداتا ريبورت اقوم بكتابة كود الاستعلام كالتالي
Set rs = New ADODB.Recordset If Combo1.Text = "محمد" Then sql = sql = "select field1,field2,field3, from table1 where field2='" & Combo1.Text & " ' " rs.Open sql, db, adOpenStatic, adLockOptimistic Set dr.DataSource = rs dr.Show
علما بأن dr هو اسم تقرير المصنوع بالداتا ريبورت
كيف اقوم بذلك باستخدام الكريستال وبالذات في وجود الاكواد التلقائية التي تظهر في نافذة جديدة؟؟
Dim Report As New CrystalReport1 Private Sub Form_Load() Screen.MousePointer = vbHourglass CRViewer1.ReportSource = Report CRViewer1.ViewReport Screen.MousePointer = vbDefault End Sub Private Sub Form_Resize() CRViewer1.Top = 0 CRViewer1.Left = 0 CRViewer1.Height = ScaleHeight CRViewer1.Width = ScaleWidth End Sub
كل ما استطعت فعله هو اظهار الشاشة التي يحويها التقرير
form2.show
ولم اعرف طريقة اظهار نتائج الاستعلام في نفس التقرير
معذرة على الاطالة ولكنني بحاجة للافادة مع العلم بأنني قرأت الدروس الموضوعه ولكنها اعتمدت
على الفلترة من نفس التقرير، وليس الاستعلام من داخل الفيجوال واظهار الناتج في التقرير
ارجو منك توضيح الطريقة اكثر اوارفاق مثال صغير جدا
للضرورة :( ولك جزيل الشكر والامتنان
هلأ اسمعيني ..
اول شيء بتعملي Module
بتكتبي فيه
Public N1 as String
وبعدين بتروحي .. على الصفحة اللي فيها القائمة المنسدلة
وتضغطي على حدث
Combo1_Click
وتستدعي ال
Form
الموجود فيه الكود هذا
Dim Report As New CrystalReport1 Private Sub Form_Load() Screen.MousePointer = vbHourglass Set rs = New ADODB.Recordset If N1= "محمد" Then sql = sql = "select field1,field2,field3, from table1 where field2='" & N1 & " ' " rs.Open sql, db, adOpenStatic, adLockOptimistic Set Report = New CrystalReport1 Report.Database.SetDataSource RS CRViewer1.ReportSource = Report CRViewer1.ViewReport CRViewer1.Zoom 100 Set RS = Nothing End Sub Private Sub Form_Resize() CRViewer1.Top = 0 CRViewer1.Left = 0 CRViewer1.Height = ScaleHeight CRViewer1.Width = ScaleWidth End Sub
وبس
هلأ جربي
اختي رزان الف شكر على الرد والذي افادني كثيرا
ولكن لدي استفسار هو ان الشاشة التي تحوي القائمة المنسدلة (combo1) تحوي اكثر من قائمة
لذلك قمت بعمل اجراء منفصل خاص بكل كومبو ومن ثم قمت باستدعائه من حدث
Form_load التني تحوي التقرير الا انه عند الاستعلام من باقي القوائم تظهر رسالة الخطأ التالية
Method 'Report Source' of object 'ICrystalReportViewer10' failed
ويظهر الخطأ على
CRViewer1.ReportSource = Report
ماسببها علما بأن الاستعلام من اول قائمة يعمل بشكل صحيح ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
السلام عليكم ورحمة الله وبركاته
أعتقد والله أعلم يا أخت Dena22 أن عندك مشكلة فى مكتبات الكريستل ريبورت التى تعمل فى برنامجك (أقصد ملفات الـ .dll )
راجعى إعداد الكريستال ريبورت أن كان كل برامج الكريستال لا تعمل
أو راجعى اسم الملف فى خصائص المشروع أن كان بعضها يعمل وبعضها لا يعمل لتعرفى الملفات التى تناسبك
هذا والله أعلى وأعلم
عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :
( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )
رواه الطبراني في الكبير
:s :s :s :s :s
ما الحل اذن؟؟؟
أختي الكريمة دينا
رد الاخت رزان في محله ولكن أولا مرري قيمة الكومبو الموجودة في الفورم لتصبح في المتغير المحجوز باسم N1 وبعد ذلك قومي ببقية الكود وجملة الاسكيو ال في الفورم الخاص بالريبورت يعني في Form2
أي أنه تصبح الجملة لديك كالتالي :
أولا في زر إظهار التقرير تكتبي التالي
N1 = Combo1.text Form2.Show
بعد ذلك تكملي بقية الكود في الفورم2 وفي حدث الفورم لوود تكتبي الكود الذي كتبته الاخت رزان مع تغيير بسيط في جملةالاسكيوال بحيث تكون كالتالي :
Dim Report As New CrystalReport1 Private Sub Form_Load() Screen.MousePointer = vbHourglass Set rs = New ADODB.Recordset sql = "select field1,field2,field3, from table1 where field2='" & N1 & " ' " rs.Open sql, db, adOpenStatic, adLockOptimistic Set Report = New CrystalReport1 Report.Database.SetDataSource RS CRViewer1.ReportSource = Report CRViewer1.ViewReport CRViewer1.Zoom 100 Set RS = Nothing End Sub Private Sub Form_Resize() CRViewer1.Top = 0 CRViewer1.Left = 0 CRViewer1.Height = ScaleHeight CRViewer1.Width = ScaleWidth End Sub
وإن شاء الله ستحل المشكلة
تحياتي
OMANI FOR EVER
-------------------------------------------------

-------------------------------------------------
شكرا جزيلا للجميع على الردود
اول شيء اود الاستفسار عنه هل استخدم شاشة واحدة لعرض جميع التقارير؟ ام شاشة منفصله لكل تقرير على حسب الاستعلام؟
و ماذا لو كان هناك زر واحد لعرض التقارير ؟ هل اعرف اكثر من متغير لاحتواء قيمة الكومبو؟ وفي مثل هذه الحالة كيف ستكون جملة sql؟ وعلى اي اساس سيتم فتح كل جدول؟
يعني اذا اختار المستخدم من كومبو1 ثم قام بالضغط على "عرض التقرير" سيكون الكود
sql = "select field1,field2,field3, from table1 where field2='" & N1 & " ' " rs.Open sql, db, adOpenStatic, adLockOptimistic
واذا اختار المستخدم من كومبو2 . مثلا
sql = "select field1,field2,field3, from table2 where field2='" & N2 & " ' " rs.Open sql, db, adOpenStatic, adLockOptimistic
وفي هذه الحالة لايمكن أن أكتب في زر إظهار التقرير
form1.show form2.show
لو كان كل تقرير له شاشة منفصلة؟ اذن كيف يتم كتابة مثل هذا الكود
ارجو ان يكون قصدي واضحا
قمت بإرفاق صورة توضح ذلك
وشكرا جزيلا
تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 4 أكتوبر 2005 في 08:41
أختي الكريمة هنا أفضل طريقة أن تمرري جملة الاس كيو الى في متغيير من نوع String للفورم التالية وبالتالي سوف يقوم البرنامج باظهار التقرير بناءً على جملة الاسكيو ال الواردة في المتغير سترينج
مثال
pablic SQL as String Sql="select * form MyTable Where "تضع الشرط بناءً على نوع البحث
راح أحط مثال قريباً إن شاء الله
تحياتي
OMANI FOR EVER
-------------------------------------------------

-------------------------------------------------
أختي هل تقصدين بأنك صممتي لكل نوع تقريره الخاص أم تعرضين كل النتائج في تقرير واحد ؟
إن كان تقرير واحد فالرد السابق يفي بالغرض وإلا فاستخدمي عبارة select Case
أو IF
تحياتي
OMANI FOR EVER
-------------------------------------------------

-------------------------------------------------
شكرا جزيلا أخي omani على الرد
وما أعنيه هو استخدامي تقرير واحد يعرض كافة النتائج ، كما أنني مستخدمة جملة SQL كما كتبتها
ولكن سؤالي هو هل استخدم شاشة واحدة لعرض جميع التقارير؟ ام شاشة منفصله لكل تقرير على حسب الاستعلام؟ وهل يؤثر ذلك على سرعة تشغيل التقرير؟ لأنه جداً بطيء عند التشغيل. وهل ذلك بسبب أنني استعلم عن نص؟ (combo1.text) فإنه يأخذ وقت لاستخراج النتائج؟
وجزاك الله خيراً
بالنسبة لكون أن الكريستال بطيء فهو لان النسخه غير موثقة وفي كل مرة يطلب لها ابديت
أما استخدام فورمات منفصلة ام استخدم فورم واحد فاستخدام فورم واحد يكفي
إن كان بالامكان أن تبعثي هذه الجزئية من برنامجك لاطلع عليها واوافيك بالطريقة الصحيحة والأفضل أكون لك شاكرا
كأن ترفعي مثال مثلا ؟
تحياتي
تم تعديل هذه المشاركة بواسطة omani في 30 سبتمبر 2005 في 11:51
OMANI FOR EVER
-------------------------------------------------

-------------------------------------------------
هذا مثال سريع لكيفة البحث المتعدد بواسطة الكريستال ريبورت
أرجو أن يفيد الجميع كما أنه أول تقرير كريستال أصنعه وهذه أول مرة أتعامل فيها مع الكريستال ريبورت
تحياتي للجميع
OMANI FOR EVER
-------------------------------------------------

-------------------------------------------------
السلام عليكم ورحمة الله وبركاته
ما شاء الله عليك يا أخ عمانى خبير متمكن والله
ربنا يوسع عليك كمان وكمان
بالنسبة لكلام الأخت دينا بخصوص عرض أكثر من نموذج لتقارير فأنا أؤيد الأخ عمانى فى أن يكون نموذج واحد للتقارير وتتحكمى فى أى تقرير يعرض فيه من خلال If .... Then أو Select Case
إلا إن كان هناك ضرورة لرؤية التقريرين إلى جوار بعضهما البعض مثلا لأغراض مقارنة قيم أو خلافه
أما مشكلة البطء فلا تتأثر بعدد التقارير إلا أن كان إمكانيات الجهاز محدوده مثلا والتقرير يستهلك قدر كبير من الذاكره فى صور وزخارف أو يقرأ البيانات ببطء لسبب ما كأن يكون السيرفر بطيئ أو البيانات كثيره أو الأهم والأهم من ذلك إن كان هناك أكثر من جدول وليس هناك ربط بينهما من خلال الكريستال فهو سيقرأ كل الجاول فى كل استعلام ويهدر الوقت الكثير فى كل مره
لكنى لم ألحظ فرق فى تأثير إصدار الكريستال على السرعه بصراحه ومشكلة التحديث هذه خارج نطاق كلامى لأنى لم أتعثر فيها حتى الآن ولله الحمد
والله من وراء القصد وهو يهدى السبيل
عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :
( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )
رواه الطبراني في الكبير
مثال رائع أخي omani ولقد جربت نفس الطريقة من قبل وكانت ناجحه جدا ولكن سؤالي هو كيف يمكن اظهار التقرير بعد تحديد اكثر من استعلام
بفرض انك وضعت اداة checkbox بدلا من option أمام خيارات الاستعلام ، بحيث يمكن للمستخدم اختيار اكثر من استعلام كالبحث عن طريق الاسم والرقم معاً ، أو الاسم والتاريخ ، أو الاسم والرقم والتاريخ معاً وهكذا. فإن الكود سيكون كالتالي ( باستخدام الداتا ريبورت )
Dim sql As String sql = "select*from [mytab]" If Check2.Value = 1 Then sql = sql & "and recname='" & Combo2.Text & " ' " End If If Check3.Value = 1 Then If Check2.Value = 1 Then sql = sql & "and depin='" & Combo2.Text & " ' " Else sql = sql & "where depin='" & Combo2.Text & " ' " End If End If If Check4.Value = 1 Then If Check2.Value = 1 Or Check3.Value = 1 Then sql = sql & "and datein = #" & Format(Combo4.Text, "mm/dd/yy") & " # " Else sql = sql & " where datein = #" & Format(Combo4.Text, "mm/dd/yy") & " # " End If End If If rs.State = adStateOpen Then rs.Close rs.Open sql, db, adOpenDynamic, adLockOptimistic Set report1.DataSource = rs report1.show
ما أود معرفته هوكيف اقوم بتطبيق نفس السابق على تقارير الكريستال10؟ وباستخدام نافذة واحدة للتقرير؟
أخي abulyaman
اقتباسإن كان هناك أكثر من جدول وليس هناك ربط بينهما من خلال الكريستال فهو سيقرأ كل الجاول فى كل استعلام ويهدر الوقت الكثير فى كل مره
كيف سيقرأ كل الجداول وأنا محددة في جملة sql اسم الجدول؟
وما الحاجة للربط بين الجداول من خلال الكريستال؟
أرجو التوضيح ولك جزيل الشكر واعتذر على كثرة الاسئلة والازعاج
أختي الكريمة أنت هنا جاوبتي على سؤالك بنفسك
لو لاحظتي أنك قمت بكل احتمالات المستخدم أي أنه وضعتي احتمال ان يكون المستخدم بحث بالرقم فقط أو بحث بالرقم والاسم أو بحث بكلاهما مع التاريخ وفي النهاية استخلصتي جملة الاسكيوال فما بقي إلا أن تمرري جملة الاسكيوال الى الريبورت سواءً كان هذا الريبورت كريستال ام داتا ريبورت
فلو لاحظتي في مثالي لوجدتي أنني أقوم بوضع جملة الاسكيوال في متغيير من نوع سترينج وبعد ذلك أرسلها للفورم المسئول عن اظهار التقرير واسند التقرير عليها وهنا أنتي عملتي نفس الشي بعد أن استخلصتي جملة الاسكيوال من الاحتمالات الثلاثة راح يكون الكود كالتالي :
sql = "select*from [mytab]" If Check2.Value = 1 Then sql = sql & "and recname='" & Combo2.Text & " ' " End If If Check3.Value = 1 Then If Check2.Value = 1 Then sql = sql & "and depin='" & Combo2.Text & " ' " Else sql = sql & "where depin='" & Combo2.Text & " ' " End If End If If Check4.Value = 1 Then If Check2.Value = 1 Or Check3.Value = 1 Then sql = sql & "and datein = #" & Format(Combo4.Text, "mm/dd/yy") & " # " Else sql = sql & " where datein = #" & Format(Combo4.Text, "mm/dd/yy") & " # " End If End If 'هنا انتهينا من الاحتمالات وما بقي علينا إلا أن نقوم بتمرير الاسكيوال المستخلصه الى الفورم 2 كالتالي : ' Form2.Show
OMANI FOR EVER
-------------------------------------------------

-------------------------------------------------
OMANI FOR EVER
-------------------------------------------------

-------------------------------------------------
السلام عليكم ورحمة الله وبركاته
يتقبل الله منكم الطاعات ويبارك لكم فيها و رمضان كريم
اقتباساعتذر على كثرة الاسئلة والازعاج
نحن نتعلم هنا من كثرة الأسئلة لا داعى للإعتذار أبدا
عفوا أعذرينى على الخطأ الكتابى فى كلمة الجاول كنت أعنى الجدول
وكان كلامى عن الكريستال بصفه عامه وليس مثالك بالتحديد
(حيث أنك ترسلين الاستعلام مباشرة أى أن البيانات محدده من خلال جملة الاستعلام واعتمادك على الفيجوال أكثر من كريستال وهذا لم يكن محور إجابتى)
كنت أتكلم عن حالة مثلا فيها جدولين Master - Details مثلا أو جدولين مكملين لبعض ولا يوجد بينهما Link فبعض المستخدمين ينسى الربط بين الجداول ويكون هذا سبب بطء تحميل التقرير لأنه كما أشرت يبحث عن كل البيانات وليس ما تم تحديده فى التقرير
وتقبل الله منا ومنكم صالح الأعمال
عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :
( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )
رواه الطبراني في الكبير
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…