السّلام عليكم و رحمة الله و بركاته
إخواني الأكارم .. أرجو أن تكونوا بتمام الصحّة و العافية و راحة البال إن شاء الله
كرم و إحسان منكم .. إن كان بالإمكان المساعدة في حل هذه الإشكالية
لم يسبق لي أبدًا التّعامل مع الكريستال ريبورت و لم أعرف كيف أبدأ
بالملف المرفق يمكن طباعة محتويات الداتا غريد كاملة أو طباعة حسب البحث بالحرف الأوّل عن الاسم ..هذا بالفورم 4 و الفورم 5 و الكريستال ريبورت 2 ..
إلى هنا كل شيء تمام و يعمل بشكل جيّد و الحمد لله
الإشكالية :
أريد بالفورم 1 و الفورم 2 و صفحة الكريستال ريبورت 1 تقسيمها إلى قسمين
أقصد تقسيم صفحة الكريستال ريبورت 1 .. النصف العلوي لبيانات سجل و النصف الثاني السفلي لبيانات سجل آخر
لو كتبت بالفورم 1 بالتاكست 1 الرقم 1 مثلا و بالتاكست 2 الرقم 2 .. يظهر بصفحة الطياعة بيانات السجل رقم 1 و بيانات السجل رقم 2 ..
لو كتبت بالفورم 1 .. الطباعة من 10 إلى 11 مثلا ..
تظهر بصفحة الطباعة بينات السجل رقم 10 و بيانات السجل رقم 11 ... إلخ
أرجو المعذرة منكم .. قد تكون العملية ربّما مجهدة لكن صدّقوني حاولت بمعرفتي المتواضعة و لم أصل إلى الحل المناسب
بارك الله فيكم و لكم مقدّمًا و جزاكم خير الجزاء
إحتراماتي
CrystalReports
التفاصيل توضع فقط في Details Section
ولاجبار التقرير عرض تفاصيل سطرين فقط في كل صفحة اعمل التالي:
في رأس Details section إضغط زر يمين واختار Section Expert
في النافذة التي ستظهر اختار التبوين Paging
ضع ✓ في End of Section ثم اضغط الزر [x-2] الخاص به
في نافذة التحرير التي ستظهر اكتب IF (RecordNumber MOD 2 = 0) THEN TRUE
السّلام عليكم و رحمة الله و بركاته
تسلم أخي الكريم " طالب برمجة " و سلم يمينك و دينك على اللمسة الرائعة و المميّزة
معلومة رائعة إستفدت منها كثيرًا تضاف لقائمة معلومات التي تنوّر بها دروب المتعلّمين أمثالي
زادك الله من علمه و فضله و أفاض عليك بطيّبات و أرزاق الدنيا و الآخرة
فعلا تحقّق إظهار فقط سجلّين على صفحة التّقرير ..
بقيت لي إشكالية أخي الكريم و هو أنّ التّقرير يظهر فقط السجل رقم 1 و السجل رقم 4 ..
حاولت بهذا الكود لإظهار السجلات المكتوبة بالتاكست 1 و التاكست 2 لكن دون فائدة
كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Application.DoEvents()
Dim ConInfo As New CrystalDecisions.Shared.TableLogOnInfo
ConInfo.ConnectionInfo.ServerName = Application.StartupPath & "\SONDOSS.mdb"
ConInfo.ConnectionInfo.DatabaseName = "SONDOSS.mdb"
ConInfo.ConnectionInfo.UserID = "Admin"
ConInfo.ConnectionInfo.Password = ""
Dim rpt1 As New CrystalReport1
rpt1.Database.Tables(0).ApplyLogOnInfo(ConInfo)
rpt1.SetDataSource(DataSet1)
Dim Xxx = Val(TextBox1.Text)
Dim yyy = Val(TextBox2.Text)
SQLstr = "Select * From STUDENT where [IDD] BETWEEN " & Xxx & " and " & yyy & " ORDER BY [IDD]"
DataSet1.Clear()
Dim DataAdapters As New OleDbDataAdapter(SQLstr, Conn)
Dim frm As New Form2
frm.CrystalReportViewer1.ReportSource = rpt1
frm.CrystalReportViewer1.LogOnInfo(0).ConnectionInfo.Password = ""
frm.ShowDialog()
End Sub
لو تكرّمت بالنّظر في هذا الاستعلام و تصحيح إن كان ذلك ممكنا
أشكرك جزيل الشكر مقدما
إحتراماتي
باركك الرب
الخطأ السابق كان في نوع IDD فهو نصي وليس رقمي، وكان يجب أن توضع قيمها بين علامات تنصيص ' '
والأخر لم يتم تنفيذ الاستعلام بعد أن أنشاء DataAdapters
والآخير تم ربط التقرير مع قاعدة البيانات قبل الاستعلام الجديد
إذاً، ربط التقرير بالبيانات يكون بعد تنفيذ الاستعلام
هذا تعديل للكود وقد حذفت الغير ضروري
PHP كود :
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim Xxx = Val(TextBox1.Text)
Dim yyy = Val(TextBox2.Text)
Dim dt As New DataTable
SQLstr = "Select * From STUDENT where [IDD] BETWEEN @id1 and @id2 ORDER BY [IDD]"
Dim DataAdapters As New OleDbDataAdapter(SQLstr, Conn)
DataAdapters.SelectCommand.Parameters.AddWithValue("@id1", Xxx)
DataAdapters.SelectCommand.Parameters.AddWithValue("@id2", yyy)
If DataAdapters.Fill(dt) > 0 Then
Dim rpt1 As New CrystalReport1
rpt1.SetDataSource(dt)
Dim frm As New Form2
frm.CrystalReportViewer1.ReportSource = rpt1
frm.ShowDialog()
Else
MsgBox("لا توجد نتائج بين الرقمين")
End If
End Sub
يستحسن استخدام DataTable بدلا من DataSet
السّلام عليكم و رحمة الله و بركاته
بارك الله فيك أخي الكريم و جزاك خير الجزاء
أرجو المعذرة أتعبتك معي بكثرة تساؤلاتي .. عسى الله أن يعوّضك بخير و أحسن منها إن شاء الله
الفكرة أخي الفاضل هي طباعة كشوف نقاط للتّلاميذ ..الورقة الواحدة تكفي لطباعة كشفيْن إثنيْن
قد يكون مثلاً لديَّ 30 تلميذًا و أودّ طباعة الكشوف من 1 إلى 13 حسب الحقل IDD
هنا تتم طباعة كشوف نقاط التّلميذ من رقم 1 بقاعدة البيانات لغاية التّلميذ رقم 13 .. قد تكون ورقة الكشفين الأخيرين بها جزء سفلي فارغ .. هذا لا يهم .. لأنّ العدد فردي
لو أردت إكمال الطباعة بوقت آخر .. فقط أكتب بالتاكست 1 الرقم 14 و بالتاكست 2 الرقم 30 لإكمال ما تبقّى من الكشوف
جرّبت أخي الكريم كتابة بالتاكست 1 الرقم 4 و بالتاكست 2 الرقم 5 .. لكن ظهر بالتّقرير فقط بيانات سجل واحد رقم 4 .. و لو أردت إظهار السجلين 4 و 5 يجب كتابة بالتاكست 2 الرقم 6 وهو غير موجود أصلا بقاعدة البيانات
الرجاء فضل و كرم و إحسان منك النظر بالملف المرفق
و لك منّي كل الشّكر و التّقدير
إحتراماتي
جرب تكتب بالتاكست 1 الرقم 444 و بالتاكست 2 الرقم 555 سيظهر التقريران
من الأساس وضع IDD نصي هو سبب المشكلة
جرب تغير نوع الحقل الى رقم (وهو المستحسن) ولكن ستجد نفسك مجبر على كتابة الرقم 444 وليس 4
ما رأيك أن تستخدم ورق A5 ومقاسها نصف مقاس ورق A4
إن كان المقصود تقارير تسلم لكل تلميذ فيصبح شكل تقرير منفصل لكل تلميذ فهذا أفضل
السّلام عليكم و رحمة الله و بركاته
تسلم أخي الكريم و سلم يمينك و دينك
بصراحة ليس لي أدنى فكرة عن المقاس A5 و إن كنت ترى أنّه الأنسب فلا بأس من توضيح الفكرة الله يخلّيك
رغم أنّي أفضل العمل على ورقة 29.7 *21 .. فقط لأني تعودت عليها .. و هي المتوفرة بكثرة لدي
أنا عملت الفكرة لكن بالفيجوال بيسك 6 و الأكتيف ريبورت لكن إنتقالي للدوت نت فأردت تطبيق نفس الفكرة
سأحاول تصميم أكثر دقة و أرسله هنا للنظر أخي الكريم
إحتراماتي
إذا أردت نصيحتي استخدم الريبورت فيور ReportViewer ففيها إمكانيات سهلة بعيده عن تعقيد الكريستلا ريبورت CrystalReport
بالنسبة لورق مقاس A5 فهي نصف مقاس A4 وعندها لن تحتاج إلا قص ورق A4 نصفين وتكون المسألة أكثر سهولة وتنظيماً.
ومتناسقة من ناحية الهوامش أيضاً.
السّلام عليكم و رحمة الله و بركاته
كيف أخي الكريم أجعل تنسيق الورقة A5 لو سمحت ؟؟
بارك الله فيك و لك مقدّمًا
تحياتي
عليك بتغيير إعدادت الصفحة في التقرير وذلك بالنقر زر يمين في أي مكان في التقرير واختيار Design ومنه Page Setup
وفي نافذة إعدادات الصفحة التي ستظهر حدد الورق A5 مع تغيير اتجاه الورقة الى Ladscape
وإذا أردت استخدام تقارير ReportViewer فيتم بالنقر زر يمين في خارج حدود التقرير (أي خارج المنطقة البيضاء) وتختار Report Properties