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

مشكلة في Crystal Report مع Oracle

مغلق
بدأه رغد777 في 27 أبريل 2005 · 30 رد · 6,538 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

مرحبا بالجميع.

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

عند عمل report وربطه بـ قاعدة البيانات أوراكل يجب علي أن أدخل كلمة المرور وأسم المستخدم لـ الأدخول على أوراكل كما هو معروف. وأيضاً أدخل أسم servies وهو على ما أعتقد أسم database لـ أوراكل.

....

بعد عملية الربط REPORT مع ORACLE ثم أعمل RUN للبرنامج يظهر لي شاشه أضغط منها زر إلى FORM أخر خاص ب REPORT . إذا أردت أن أدخل ل REPORT يطلب مني أربع أشياء

NAME OF DATE BASE

SERVISE

USERNAME

PASSWORD

بعد تعبيئتها كلها أضغط finish

تأتي mssg تقول لي

login failed: please try again

وبعد عدة محاولات لا يفتح form الـ report و لا يحضر البيانات

ماالمشكلة ؟؟؟؟

أرجو أن يكون السؤال واضح ومفهوم

أرجو المساعدة الواضحة البينه منكم.

وشكراً لكم.

أختكم : رغد

#2

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

اختارى وانتى بتعملى اتصل مع قاعدة البيانات فى الكريستل

integrated security

post-22366-1114619682_thumb.jpg

تم تعديل هذه المشاركة بواسطة waleedhm في 27 أبريل 2005 في 19:37

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#3

أعتقد أن خيار ال integrated security لن يعمل مع أوراكل

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

يعني في داخل البرنامج، قومي بعمل اتصال مع ارواكل من خلال مثلا OracleConnection مثل الخطوات الاخرى حتى تضعي البيانات داخل Dataset، وتأكدي من اختيار حفظ لكلمة المرور عند عمل الاتصال

بعد ذلك ضيفي الكريستال ريبورت، وعند سؤالك عن مصدر البيانات اختاري Project Data > Ado.Net Dataset ومن ثم اختاري الجدول الذي تريدين

كما في الصورة المرفقة

post-4234-1114623221_thumb.jpg

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#4

شكرأ لكما

أخي وليد أنا أعتقد أنه لا يمكن أن أربط البرنامج مع oracle إلا بوجود username & password وجربت ذلك من دونها ولكن طلبها.

أما أخي محمد فأنا ربطت البرنامج من خلال data adapter وليس data set

جربت ما تقوله ولكن فشلت هل يمكن عمل مثال واضح أو كتابة الكود بذلك, وكيف أحدد مصدر البيانات وهو فارغ لم يوصله بالجداول.

وهذا هو الكود الذي فهمته منك

 Private Sub report(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Dim reportt As New report()
        reportt.Show()
        Dim objConnectionRep As New OleDbConnection()
        objConnectionRep.ConnectionString = ("Provider=MSDAORA.1;Password=orac11;User ID=ragad;Data Source=sys;Persist Security Info=True")
        objConnectionRep.Open()

        Try
            objConnectionRep.Open()
        Catch v1 As Exception
            MsgBox("The Report Form is not connected")
        End Try

    End Sub

أرجو مساعدتي وشكراً لكم.

#5

السلام عليكم كما قال الاخ محمد يجب ان نضع الجداول داخل DataSet

لكي يتم عرضها للتقارير

وهذه الطريقة

سأشرحها بالتفصيل حتى تعم الفائدة

الاتصال بقاعدة البيانات :

نضغط بالزر الايمن من Data Connection ونختار ADD

1.JPG

تظهر لنا شاشة بها تبويبProvider تعني المزود

نختار Oracle

2.JPG

تظهر لنا 3 حقول نصية

1 اسم قاعدة البيانات

2 اسم المستخدم

3 كلمة المرور

ثم نضغط Test للتأكد من الاتصال بقاعدة البيانات اوركل

4.JPG

#6

بعد ذلك نقوم باضافة ال DataSet

7.JPG

8.JPG

ومن ثم نضغط على كلمة Server Explorer ليظهر لنا على اليسار اسم قاعدة البيانات ونختار Table ومنها اسم الجدول Employees ونسحبة الى داخل الشاشة الصفراء

9.JPG

ومن ثم من قائمة Build نختار Build Solution

10.JPG

#7

بعد ذلك نضيف Crystal Report للمشروع

11.JPG

ونختار AS Blank Reprt

13.JPG

بعد ذلك من DataBaseField باليمين نختار Add Remove DataBase

14.JPG

ثم نختار Project Data - ADO.NET DataSets

اختر قاعدة البيانات ومن ثم الجدول

ملاحظة //بناءاَ عن ال DataSet لو وضعنا اكثر من جدول سيظهر هنا عدة جداول

15.JPG

#8

بعد ذلك يتم السحب الحقل الى مكان المناسب للتقرير

بقي علينا نضيف مكتبة dll الاوراكل للمشروع

نضغط بالرز الايمن ونختار Add Refernece

16.JPG

ثم نبحث عن System.DataOracleClint.Dll ونضغط Select ثم OK

17.JPG

الان موضح في الشاشة انه تم اضافة المكتبة

18.JPG

وكتبت هذا الكود في منطقة التحميل للشاشة" Load"

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            Dim connOracle As New OracleConnection("user id=hr;data source=orcl;password=sys")
            Dim dap As New OracleDataAdapter("Select * From EMPLOYEES", connOracle)
            Dim reportt As New CrystalReport1
            Dim ds As New DataSet

            ds.Clear()
            dap.Fill(ds, "Employees")
            reportt.Database.Tables("Employees").SetDataSource(ds)
            CrystalReportViewer1.ReportSource = reportt
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

وبالتوفيق

#9

شرح أخي mn كافي ووافي

لكن يمكن اختصار الخطوات 2 و3، عن طريق سحب connection من server explorer الى الفورم، سوف يتم انشاء OracleConnection مباشرة، وايضا سوف يقوم بضافة ال reference الى مكتبة ارواكل

بعد ذلك ننشئ DataAdapter مبنية على الاتصال الذى قمنا به والضغط عليها بالزر اليمين ونختار Generate Dataset

ايضا يمكن اختصار سطر ربط التقرير بالدات سيت هكذا

reportt.SetDataSource(ds)

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#10

أشكرك أخي mn

على الشرح المفصل وأيضاً أخي محمد و أخي وليد

وقد جربت ما شرحته إلا أنني واجهت مشكلتين:

1- ذكرت في شرحك ما نصه( بعد ذلك يتم السحب الحقل الى مكان المناسب للتقرير ).

ما ذا تقصد بذلك .

2 - ذكرت ايضاً ما نصه ( ثم نبحث عن System.DataOracleClint.Dll ونضغط Select )

عملت إضافة ل references ولكن لم أجد هذه المكتبة عندي (System.DataOracleClint.Dll)

لا أدري هل أحتاج إلى تحميل ملفات أو برامج خاصة بـ أوراكل أم ماذا وكيف أضيفها.

وشكراً لك على مجودك وبارك الله فيك :rolleyes: :(

#11

هل تستخدمي فيجوال ستوديو 2002 او 2003؟

لو قمتي بسحب ال connection من server explorer الى الفورم، سوف يتم انشاء OracleConnection مباشرة، وايضا سوف يقوم بضافة ال reference الى مكتبة ارواكل

وسحب الحقل المناسب، المقصود به وضع في التقرير حسب التنسيق المطلوب لشكل التقرير

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#12

بارك الله فيك اخي محمد نسمان على المتابعة

#13

آسف لأني أتعبتكما معي وأنا محرجه من ذلك

connection التي أعرفها موجوده في tools تحت قائمة data وهي oledbconnection.

ولا يوجد connection في server explorer هل تقصد هذا أم أن هناك connection أخرى ؟؟؟؟

وقد جربت ما قلته أخي محمد ولكن لم تنجح الطريقة. -|×|-

أعتقد أن خطوات أخي mn نجحت إلا أنه عند إضافة referencese لم أجد System.DataOracleClint.Dll

لا أدري لماذا؟؟؟؟؟؟؟.

كيف أضيفها.

-----------------------------<

مع العلم أنني أستخدم فيجول ستديو 2002.

----------------------------->

وشكراً لكما. :( :unsure:

:D

إلى الأمام لمعرفة الحل....--o--.....

#14

لذلك سألت عن النسخة التى لديك

فيجوال ستوديو 2002 لا يحتوي على OracleClient عليكي تنزليها من موقع ميكروسوفت، على العنوان التالي

http://www.microsoft.com/downloads/details...&displaylang=en

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#15

شكراً لك

ولكن بعد التحميل ماذا أعمل هل أجدها في referencese أم لا .

#16

السلام عليكم

أبشرك نزل oracleclient و وجدته لما أضفت REFERENCES

لكن حصل معي مشكله وهي أنه في الكود الذي كتبه الأخ MN

وبالتحديد CrystalReportViewer1.ReportSource = reportt

حصل خطاً تحت الأمر CrystalReportViewer1

ولا أدري لماذا مع أني أضفت كريستال ريبورت

وأيضاً لمجرد التأكد ماذا أغير في الكود لأنه كما أنت عارف أن الكود يخص الأخ MN

فهل أغير EMPLOYEE فقط أم أيضاً معها شيء أخر.

وشكراً لك

#17

هل من الممكن كتابة رسالة الخطأ؟، من دونها لن يعرف أي شخص المشكلة التي ظهرت

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

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#18

السلام عليكم

شكراً لك

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

رسالة الخطأ فسوف أبنها لك لاحقاً

وشكراً لك.

#19

عفوا ال CrystalReportViewer1

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

وبالتوفيق

#20

السلام عليكم

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

وهي

Name 'CrystalReportViewer1'is not declaresd.

---------------------------

شكراً لك أخ mn

ولكن سحبتها إلى form الخاص بـ crystal report ولكن لا يزال الخطأ موجود .

وشكراً لكما.

#21

هل تأكدتي من اسم الاداة في الخصائص Name

اسمها CrystalReportViewer1

؟؟؟

#22

السلام عليكم

بشـــــــــــــــــــــارة

لقد عمل Report

شكر شكر شكر خاص للأخوين محمد نسمان وmn_902

ولمن شارك وأطلع على السؤال

أسأل الله ألا يحرمكما الأجر والمثوبة.

لقد أحرجتماني على صبركما معي وعلى أخلاقكما العالية.

________________________________

بقي عمل تكميلي وهو سهل بإذن الله على مثليكما:

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

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

ليكون عمل تنظيمي.

وأتمنى أن يكون ذلك عن طريق الكود الذي كتبته أخ mn.

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

:)

#23

السلام عليكم

أبشركم أيضاً والبشاراة تتوالى أنني أستطعت عمل استدعاء البيانات عن طريق الرقم.

والكود هنا

Try
            Dim stroracle, srchtxt As String
            srchtxt = tb1.Text
            stroracle = " select  * from holder where NUMBER=" + srchtxt

            Dim connOracle As New OracleConnection("user id=ragad;data source=olo;password=sys")
            Dim dap As New OracleDataAdapter(stroracle, connOracle)
            Dim reportt As New CR1_holder()
            Dim ds As New DataSet()
            ds.Clear()
            dap.Fill(ds, "holder")
            reportt.Database.Tables("holder").SetDataSource(ds)

            CrystalReportViewer1.ReportSource = reportt
        Catch ex As Exception
            MessageBox.Show(ex.Message)

        End Try

أريد هنا مساعدة :

كيف أجعله يشيك إذا كان الرقم موجود يطبعه ويعرضه أما إذا كان غير موجود فيخبرني أن الرقم غير موجود

حاولت عمل ذلك و لم أنجح.

ارجو المساعدة.

وشكراً لكم.

#24
Dim connOracle As New OracleConnection("user id=hr;data source=orcl;password=sys")
    Dim dap As New OracleDataAdapter
    Dim reportt As New CrystalReport1
    Dim ds As New DataSet

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            dap = New OracleDataAdapter("Select * From EMPLOYEES WHERE EMPLOYEE_ID =" & Val(TextBox1.Text) & "", connOracle)

            ds.Clear()
            dap.Fill(ds, "EMPLOYEES")
            If ds.Tables(0).Rows.Count = 0 Then
                MessageBox.Show("NOT FOUND")
            Else
                reportt.Database.Tables("EMPLOYEES").SetDataSource(ds)
                CrystalReportViewer1.ReportSource = reportt
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

بالتوفيق

#25

السلام عليكم

شكرا MN على تواصلك.

لقد جربت عملية التشييك ونجحت.

هناك طلب آخر ايضأً لو سمحت

في الريبورت الذي عملته كان لكل جدول لوحده. وأريد أن أجعل BUTTON إذا ضغطته يحضر لي كل البيانات في كل الجداول أي يربط

كل الجداول و يحضر لي بياناتها.

عملت ذلك وفي DATASET و ضعت كل الجداول ربطتها بـ foriegn key مع الجدول الأساسي وربطته.

ثم في الكود كتبت جملة query أستعلام عن البيانات بـ sql ولكن في هذه الجملة يطلب مني أن أدخل أسم الجدول:

dap.Fill(ds, "EMPLOYEES")

ولكن أي جدول أضعه هنا من بين مجموعة جداول.

وأيضاً في الكود التالي

reportt.Database.Tables("EMPLOYEES").SetDataSource(ds)

وشكرً لك.

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

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

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