HnHn

Crystal Report ADO

13 ردود في هذا الموضوع

Crystal Report ADO

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

قم برسم الأداة 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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

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

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

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

ولى سؤال آخر

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

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

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

تم تعديل بواسطه abulyaman
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أخي العزيز HnHn

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

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

:rolleyes:

اخي العزيز

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

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

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

:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أخي العزيز HnHn

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

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

وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

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

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

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

الــ 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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

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

vbcodex

vbcodezoom

mov

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

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

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

مندى الحسام

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

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

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

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

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

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

تم تعديل بواسطه HnHn
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

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

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

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم

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

وفقك الله

:)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .