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

Crystal Report ADO

مغلق
بدأه HnHn في 26 ديسمبر 2004 · 12 رد · 7,380 مشاهدة · في قسم التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

Crystal Report ADO

كيف اربط كريستال ريبورت مع برنامجي المصمم عن طريق الفيجول 6

علماً بإني أستخدم قاعد بيانات 2000 محمية بكلمة مرور XV

وأستخدام في البرنامج ADO للأتصال بقاعدة البيانات عن طريق الكود

وأصدار الكريستال لدي 8.5

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#2

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

وأحببت أن أضع الأجابة لتعم الفائدة

قم برسم الأداة CrystalReport

وأعد تسميها إلى cr1

Private Sub cmdreport_Click()

cr1.ReportFileName = App.Path + "\balancesheet.rpt"
cr1.Connect = ";Pwd=" & "XV"
cr1.DiscardSavedData = True
cr1.RetrieveDataFiles
cr1.ReportSource = 0
cr1.WindowTitle = " Balance Sheet "
strformula = "{Balance.sumofbal1} >= 0 "
.cr1.ReplaceSelectionFormula (strformula)
cr1.WindowState = crptMaximized
On Error Resume Next
cr1.Action = 1
End Sub

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

تم تعديل هذه المشاركة بواسطة HnHn في 29 ديسمبر 2004 في 09:04

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#3

الله يبارك فيك ويزيدك من واسع علمه وفضله

أنا جربت الكود بس ما شغلش التقرير

رغم أنى عدلت اسم التقرير والشرط حسب برنامجى

ويعطينى رسالة غريبة يقول فيها No Error

إذا كان لا توجد أخطاء فلماذا لا يظهر؟

ولى سؤال آخر

هل يمكن إرسال قيمة مباشرة بالكود ؟

فأنا معتاد على الكتابة فى الداتا ريبورت فى أى أداة

هل ممكن عمل ذلك مع الكريستال؟

تم تعديل هذه المشاركة بواسطة abulyaman في 29 ديسمبر 2004 في 10:21

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#4

أخي العزيز HnHn

وأين أكتب اسم قاعدة البيانات المتصل بها التقرير

وشكرا

#5

أخي العزيز هذا الكود يعتمد على الاتصال بقاعدة البيانات عن طريق الكود البرمجي للأداة

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

اللصق هذا الكود .. بعد أن عدلت عليه .. وأن شالله يضبط معاك

cr1.ReportFileName = App.Path + "\Report1.rpt"
cr1.Connect = ";Pwd=" & "vb2003"
cr1.DiscardSavedData = True
cr1.RetrieveDataFiles
cr1.ReportSource = 0
cr1.WindowTitle = " HnHn"
strformula = "{Balance.sumofbal1} >= 0 "
'cr1.ReplaceSelectionFormula (strformula)
'cr1.WindowState = crptMaximized
'On Error Resume Next
cr1.Action = 1

أما بالنسبة لأرسال قيمة معينة .. تستطيع ذلك بواسطة جملة SQL

أما بالنسبة للأتصال بقاعدة البيانات المفروض يكون كاتة في تحميل الفورم

وسأقوم ببناء مثال كامل ةأنزاله قريبا .. أنتظرني..

تم تعديل هذه المشاركة بواسطة HnHn في 29 ديسمبر 2004 في 16:45

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#6

:rolleyes:

اخي العزيز

اريد ان اعرف crystal report حيث اني لم اعمل علية من قبل ولقد بحثت عن هذه الاداة في add component ولم اجدها وانا استعمل ال data report الاعتيادية.

وانا في مشروعي الان في اخرشي وهو التقارير ولم استطع ام اجعل التقارير ديناميكي يعني ارسل له قيمة من خلال text box او من غيرة ويقوم بتفيذة.

فاذا كان هذا هو الافضل فلو سمحت ترسل لي برنامج شغير يكون فية الذي شرحتة لك اعلاة .

:)

#7

اخى HnHn برجاء شرح الكود بالتفصيل للمعرفة

KHALED_HELAL

#8

أخي العزيز HnHn

عندي مشكلة واحدة بخصوص crystal report وسالت عنها كثيرا ولم أجد لها جوابا، وإن شاء الله أجد الجواب عندك، والسؤال هو:

كيف أربط crystal report مع الداتا بحيث لو غيرت مكانهما يعملان معا، وللتوضيح أكثر فقد عملت crystal report مربوط مع داتا في المسار (C:\MyProgram\data1.mdb) ولكني عندما اشغله على كمبيوتر ثاني لا يتعرف على الداتا لأن هذا المسار غير موجود وهكذا.

وشكرا

#9

بسم الله الرحمن الرحيم

تعب الأعضاء من كثرة السؤال حول كريستال ريبورت وكيفية ربطة والاستفادة منه

وأنا بدوري بعد معاناة وكثرة أسئلة وأجوبة من هنا وهناك حاولت أن أقوم بعمل مثال

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

ملاحظة : كما قلت سابقاً .. طريقة الربط أو الاتصال بالقاعدة البيانات ستكون بواسطة

الــ ADO وعن طريق الكود . والكريستال ريبورت الاصدار بين 7 وما فوق وقاعدة البيانات

2000 اكسس

سننشأ فورم ونسميه frmMain

أولاً : كود الأتصال بقاعدة البيانات

في التعريف العام General

Dim cn As Connection
Dim rs1 As Recordset

Set cn = New Connection
Set rs1 = New Recordset
path = App.path & "\db1.mdb"
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Persist Security Info=False"
rs1.Open "select * from customer", cn

وللقاعدة المحمية بكلمة مرور الكود هذا ولاحظ الفرق

Private Sub Form_Load()
Set cn = New Connection
Set rs1 = New Recordset
Dim path As String
path = App.path & "\db1.mdb"
cn.Open "provider=microsoft.jet.oledb.4.0;data source=" & path & ";jet oledb:database password=NIM"
cn.CursorLocation = adUseClient

rs1.Open "select * from customer", cn, adOpenDynamic, adLockOptimistic

End Sub

واعتقد ان كود الاتصال واضح

ننتقل للمرحلة الأهم

ثانياً : نقوم بعمل مديول Module1 ونكتب الشفرة التالية

Declare Function CreateFieldDefFile Lib "p2smon.dll" (lpUnk As Object, _
ByVal filename As String, ByVal bOverWriteExistingFile As Long) _
As Long

وهذا الكود لكي يقوم البرنامج بعمل قاعدة مؤقته لحفظ بيانات الاستعلام الناتج

من عملية المعاينة للتقرير

نتابع ...

ثالثاً : أدراج أداة الكريستال ريبورت

في نافذة project اضغط بالزر الأيمن وأضف الأداة

Crystal Report 8.5 أو الاصدار الموجود عندك

وقم بتبع عملية المعالج في أضافة قاعدة البيانات وأضافة الحقول وإلى آخر

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

للمعرفة ... المهم سيقوم المعالج تلقائياً بأنشاء فورم Form1 ويحيوي ما يلي

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

كما سيضيف لقائمة الأداوات الاداة Crystal Report Viewer control

المهم ... الشفرة التي أنشائها المعالج وهي مواصفات للتقرير من طول وعرض وآخره

لا نحتاجها وسنستبدلها بالشفرة التالية

Dim Report As New CrystalReport1
Dim cn As Connection
Dim rs1 As Recordset

Private Sub Form_Load()

Set cn = New Connection
Set rs1 = New Recordset
path = App.path & "\db1.mdb"
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Persist Security Info=False"
rs1.Open "select * from customer", cn

Report.DiscardSavedData
Report.Database.SetDataSource rs1, 3, 1

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

طبعا هذا الكود سيكتب في الفورم المنشء من قبل المعالج

وأخيراً

رابعاً : عرض أداة التقارير

في الفورم الرئيسي Form1 سنقوم بأنشاء زر

ولنسمية Show Report

'HnHn
'عملية أنشاء قاعدة لحفظ نا تج عملية الاستعلام
CreateFieldDefFile rs1, App.path & "\customer.ttx", 1
Form1.Show

وهذا الكود مكمل للكود السابق المكتوب في المديول

customer.ttx وهذه هي قاعدة البيانات المؤقته التي يتم

تخزين ناتج الاستعلام فيها

وهذا ملخص لعملية عرض تقرير لأداة الكريستال

وأرجو أن أكون قد أديت رسالة ليستفاد منها الجميع .... وشكراً

وهذا المثال الذي تم شرحه

CrystalReport.zip

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#10

أريد أن أوضح مسألة ألتباس حدثت في بعض المنتديات وقامت بأتهام هذا المنتدى الأكثر من رائع

بأنه يسرق المواضيع منهم ولن أذكر أسم المنتدى الذي قام بقذف هذا المنتدى وأنما سأوضح المسألة

المسألة كلها أني قمت أنا وعدة أصدقاء لي وهم

vbcodex

vbcodezoom

mov

.. بوضع سؤال بنفس السياق في

عدة منتديات لأيجاد أفضل رد ولأتوصل لأكثر من معلومة وتكوينه في فكرة معينة

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

مندى الحسام

منتدى الفيجول نيت

منتدى الفيجول دوت نت

منتدى المحيط العربي

وكلها بنفس السياق ... وهذا كله فقط لرد على المشككين في مصداقية هذا المنتدى

أما الشرح التفصيل .. فهو لي بهد مني ولا يوجد إلا في هذا المنتدى فقط

وأهذا ما أرت توضيح وشكراً .... وأعتذاري للأخ العزيز طاق أبراهيم <_<

تم تعديل هذه المشاركة بواسطة HnHn في 31 ديسمبر 2004 في 19:44

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة
#11

شكراً لك أخي HnHn على شرحك الرائع للكود

أعجبني طرحك للجواب الذي وجدته ( بعد البحث ) هنا في المنتدى لمساعدة إخوانك، فبذلك تؤجر على إفادة إخوانك، كما يؤجر كل من ساهم في معرفتك لهذا الكود عن كل واحد يستفيد منك .. وهكذا ..

يجب أن لا ننسى أن رسالة المنتديات هي المساهمة الخيرية في نهضة الأمة وابتغاء الأجر من الله ( علم ينتفع به) ، وجميل أن نرى جميع المنتديات تحقق التكامل ما بينها ..

بالتوفيق

ani.gif
#12

السلام عليكم

شكرا لك اخينا العزيز HnHn

وفقك الله

:)

gaza3-3.jpg
#13

أشكرك وأتمنى الاضافة للموضوع لكي يستفاد منه لجميع

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة

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

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