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

[ تمت الإجابة ]كيف يمكن التعامل مع الكريستال ريبورت بدون تحديد القاعدة ,, او تحديد القاعدة بالكود

بدأه dot.net2008 في 7 فبراير 2010 · 36 رد · 13,806 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخواني الكريم السلام عليكم ,,

لنفرض انه لدينا برنامج يعمل على الشبكة المحلية LAN

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

مع العلم ان القاعدة موجودة على جهاز المستضيف (سيرفر)

المشكلة هنا انه عند انشاء تقرير كريستال ريبورت جديد تظهر لي شاشة dialog لتحديد مكان القاعدة ,, وكيف احدد مكان القاعدة ,, وانا لا اعلمه :blink:

11265537553.jpg

انتظركم اخواني

#2

علي افتراض انك بتستخدم SQL server

قم بالاتصال بالسيرفر عن طريق ODBC

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3

السلام عليكم

بارك الله فيك اخي محمد

ولكن المشكلة لا تكمن هنا المشكلة , تكمن في كيفية كتابة الكود الذي يخصص القاعدة لهذا التقرير

فكما قمت بالتوضيح في الموضوع

ان القاعدة موجود على السيرفر (جهاز عادي مستضيف للقاعدة) هل يمكن بواسطة الكود الاتصال بهذه القاعدة ,,

مع العلم ان القاعدة access

وشكراً

#4

up

#5

هل من مساعدة إخواني الكرام

#6

أخي الفاضل

من غير لا up ولا down

:lol:

سواء بتستخدم قواعد بيانات SQL Server أو Access سيتم الاتصال بالقاعدة عن طريق ODBC وكما وضحت لك من قبل في المشاركة السابقة والكود ليس له علاقة بطلبك

ومن غير من نضيع وقتنا في الكلام الكتير

أنا عملت لك شرح مفصل بالفيديو في المرفقات لطريقة الاتصال بقاعده بيانات Access موجوده علي السيرفر أو علي الجهاز الذي يستضيف هذه القاعده عن طريق ODBC

ثم عرض بيانات جدول معين علي سبيل المثال داخل تقرير الكريستال ريبورت

بالتوفيق

Connect to Access Data base with crystal Report.rar

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 8 فبراير 2010 في 11:16

4

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#7

السلام عليكم

استاذ محمد عاجز عن شكرك, بارك الله فيك وجزاك خيراً وزادك من علمه

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

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

سوف اوضح لك الفكرة

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

قمت مؤخراً بعمل برنامج على تقنية ال دوت نيت 2008 البرنامج بسيط بعض الشيء ولكنه يعمل على الشبكة المحلية Lan

وقمت بتوزيعه على شكل setup وتم تثبيته على جميع الاجهزة ولكن عند التثبيت وفتح اول فورم يظهر لك فورم لتحديد مكان القاعدة التي سيعمل عليها البرنامج ,, وتقوم بتحديدها ,,,

هنا مشكلتي ,, المشكلة انا لاادري ماهو المسار الذي ستوضع فيه القاعدة .. على الجهاز السيرفر

يعني بالمختصر لا ادري اين سيتم انشاء ملف المشاركة التي سوف يتصل ال report به

هل وصلت الفكرة ؟؟

,, واشكرك مرة اخرى :)

تم تعديل هذه المشاركة بواسطة dot.net2008 في 8 فبراير 2010 في 12:02

#8

عذراً

ولماذا لا تدري ؟

ولماذا لا تقوم أنت بإنشاء مجلد مشاركة علي جهاز السيرفر وبه القاعده التي سوف تتصل بها

فهل من المعقول أن يقوم أي شخص حتي لو كان هذا الشخص أنا أن اقوم بالاتصال بقاعده بيانات مهما كان نوعها من غير ما اكون عارف مسار هذه القاعده او مكانها علي الشبكة المحلية أو الدولية

بصراحة

سؤالك غريب والاغرب اني بعد ما وضعت يدي علي مشكلتك ابتديت استغرب اكتر ومش قادر افهمك :unsure: :blink:

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 8 فبراير 2010 في 14:08

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#9
محمد فؤاد تركي كتب:

عذراً

ولماذا لا تدري ؟

ولماذا لا تقوم أنت بإنشاء مجلد مشاركة علي جهاز السيرفر وبه القاعده التي سوف تتصل بها

فهل من المعقول أن يقوم أي شخص حتي لو كان هذا الشخص أنا أن اقوم بالاتصال بقاعده بيانات مهما كان نوعها من غير ما اكون عارف مسار هذه القاعده او مكانها علي الشبكة المحلية أو الدولية

بصراحة

سؤالك غريب والاغرب اني بعد ما وضعت يدي علي مشكلتك ابتديت استغرب اكتر ومش قادر افهمك :unsure: :blink:

لا ادري هل انني لم استطيع ان اوصل فكرة بعد ام ماذا .. :lol: :blink:

على العموم ,,

لنفرض ان هناك شركة وبها 50 جهاز كمبيوتر وجميع هذا الاجهزة تعمل على نفس البرنامج وتتعامل مع نفس القاعدة (اكسيس مثلاً) موجودة على جهاز من هذه الاجهزة في مجلد مشاركة

ليس من المعقول ان اذهب لكل جهاز اعمل له ضبط خاص من اجل ان يرى القاعدة لكي يطبع من خلالها ,, :unsure:

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

طيب اخي لنفرض ان طريقة توصيلي للمعلومة هي خاطئة

لنفرض ان هذه الفكرة واجهتك ماذا كنت ستفعل في هذه الحالة :lol: :P :)

تحياتي

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

تم تعديل هذه المشاركة بواسطة dot.net2008 في 9 فبراير 2010 في 15:12

#10

مع الاسف والاسي نعم

ستذهب علي كل جهاز وتبدأ في ضبط ODBC

وكما شرحت لك بالفيديو سابقا

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#12
MAHMAR2003 كتب:

بوركت اخي ولكن عندما قمت باخد الكود واستخدامه

السلام عليكم

قمت باخد هذا الكود من الرابط الموجود في الموضوع

        Try
            Dim con As New OleDbConnection("provider=microsoft.jet.oledb.4.0; data source = \\xp\SharedDocs\ahmad.mdb; jet oledb:database password=123wer")
            Dim crtableLogoninfos As New TableLogOnInfos()
            Dim crtableLogoninfo As New TableLogOnInfo()
            Dim crConnectionInfo As New ConnectionInfo()
            Dim CrTables As Tables
            Dim CrTable As Table
            Dim crReportDocument As New Crpt_All()
            With crConnectionInfo
                .DatabaseName = "\\xp\shareddocs\ahmad.mdb"
                .Password = "123wer"
            End With
            CrTables = crReportDocument.Database.Tables
            For Each CrTable In CrTables
                crtableLogoninfo = CrTable.LogOnInfo
                crtableLogoninfo.ConnectionInfo = crConnectionInfo
                CrTable.ApplyLogOnInfo(crtableLogoninfo)
            Next
            CrystalReportViewer1.ReportSource = crReportDocument
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        Me.CrystalReportViewer1.RefreshReport()

ولكن ظهر لي خطأ في هذا السطر ..

       Dim crReportDocument As New Crpt_All()

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

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Data.OleDb
#13
Crpt_All()

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

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#14
محمد فؤاد تركي كتب:

Crpt_All()

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

:lol: :lol: :lol:

حسناً ,, اشكرك جزيل الشكر اخي محمد على مساعدتك لي

ولكن مما رأيت من خبرتك في هذا المجال فأنا مازلت متوهق لمزيد من الخبرة منك ..

التقرير اشتغل 100 % والحمد لله ولكن يا اخي تم عرضه بدون حقول ,,

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

وهذا الجدول به 3 حقول

------

id

name

age

-------

كيف سيتم ذلك ؟؟ يعني باختصار كيف سأضيف هذه الحقول للتقرير :)

لانك كما تعلم في التقارير الثابتة التي يتم إنشائها بالطريقة العادية تظهر لك اسماء الحقول ,, ومن السهل ان تنقلها بالسحب والافلات في التقرير ,, اما هنا فالامر مختلف بعض الشيء ,,

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

جزاك ربي خيراً

#15
post-46243-12659056877911_thumb.jpg
2

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#16

جميل جداً الموضوع ,, ومعلوماته جديدة

هل ممكن من الكود الموضح : في الاتصال بالقاعدة عن طريق الكود

عمل استعلام في التقرير

مثلاً

select * from users_information where name='ahmad'

.

#17

أخي الفاضل

لعمل تقرير يستند علي استعلام بحيث تستطيع من خلالة الاستعلام عن كود موظف معين يجب عليك أن تضع Parameter داخل الاستعلام وتمرر هذا الــ Parameter للتقرير حتي تصل للنتيجة

فأذا كنت تستخدم SQL Server فأنصحك باستخدام Stored Procedure لان التقرير الذي يستند للاجراءات المخزنة يكون اسرع في نمط العرض عن طريق استخدام Views أو الاتصال المباشر بالجداول

أما اذا كنت تستخدم برنامج الاكسس كقاعده بيانات فبنفس المنهجية تستطيع استخدام الاستعلامات لتصميم استعلام ثم تقوم بوضع Parameter المناسب ثم تقوم بربطة بالتقرير كما وضحت سابقاً

وأخيراً أحب أن اوضح ان هناك حيل كثيرة للوصول الي مصادر البيانات عن طريق كود SQL

وطبعا الكود المكتوب يمكنك تشغيلة لكي يستجيب التقرير لما يتم كتابتة بطريقة برمجية لكن يعيب هذه الفكرة انك ستحمل علي المستخدم عبء تعلم جمل SQL للوصول الي قاعده البيانات واستخراج ما بها من بيانات بعرضها داخل التقرير والجدير بالذكر انني شاهدت العديد من الامثلة علي الانترنت مصممة لاستخراج تقارير بطريقة Generic لكنها لا تحضرني الذاكرة للوصول الي هذه الامثلة الان

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 11 فبراير 2010 في 20:34

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#18
محمد فؤاد تركي كتب:

أخي الفاضل

لعمل تقرير يستند علي استعلام بحيث تستطيع من خلالة الاستعلام عن كود موظف معين يجب عليك أن تضع Parameter داخل الاستعلام وتمرر هذا الــ Parameter للتقرير حتي تصل للنتيجة

فأذا كنت تستخدم SQL Server فأنصحك باستخدام Stored Procedure لان التقرير الذي يستند للاجراءات المخزنة يكون اسرع في نمط العرض عن طريق استخدام Views أو الاتصال المباشر بالجداول

أما اذا كنت تستخدم برنامج الاكسس كقاعده بيانات فبنفس المنهجية تستطيع استخدام الاستعلامات لتصميم استعلام ثم تقوم بوضع Parameter المناسب ثم تقوم بربطة بالتقرير كما وضحت سابقاً

وأخيراً أحب أن اوضح ان هناك حيل كثيرة للوصول الي مصادر البيانات عن طريق كود SQL

وطبعا الكود المكتوب يمكنك تشغيلة لكي يستجيب التقرير لما يتم كتابتة بطريقة برمجية لكن يعيب هذه الفكرة انك ستحمل علي المستخدم عبء تعلم جمل SQL للوصول الي قاعده البيانات واستخراج ما بها من بيانات بعرضها داخل التقرير والجدير بالذكر انني شاهدت العديد من الامثلة علي الانترنت مصممة لاستخراج تقارير بطريقة Generic لكنها لا تحضرني الذاكرة للوصول الي هذه الامثلة الان

وضحت الفكرة ...

ولكن لايوجد فكرة بدون استعمال ال stored procedure لأني استخدم ال access ...

انا تعاملت مع الparameters من قبل ولكن مع التقارير المدمجة اي مع التقارير التي تُدمج مع ال solutions

ارجوا التوضيح لو تفضلت .. :)

.

#19

أعتمد دائماً في شروحاتي ومساعده الاعضاء علي طريقة الشرح المصور بالفيديو فعلي ما أعتقد أنها أقصر طريقة لتوصيل الفكرة والمعلومة عن الطرق الاخري وهي الكلام الكثير

لان خير الكلام ما قل ودل

اليك المرفق شرحا مصور بالفيديو يشرح طريقة ربط ملف Access يحتوي علي استعلام به parameter بتقارير الكريستال ريبورت

ان شاء الله يكون فيه الفائده

بالتوفيق

Crystal_Report_Parameter.rar

2

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#20

لا ادري كيف اشكرك اخي محمد ,,

لك مني دعوة في ظهر الغيب

تحياتي ..:)

.

#21
محمد فؤاد تركي كتب:

أعتمد دائماً في شروحاتي ومساعده الاعضاء علي طريقة الشرح المصور بالفيديو فعلي ما أعتقد أنها أقصر طريقة لتوصيل الفكرة والمعلومة عن الطرق الاخري وهي الكلام الكثير

لان خير الكلام ما قل ودل

اليك المرفق شرحا مصور بالفيديو يشرح طريقة ربط ملف Access يحتوي علي استعلام به parameter بتقارير الكريستال ريبورت

ان شاء الله يكون فيه الفائده

بالتوفيق

السلام عليكم ,, فعلاً اخي فكرة جديدة وجميلة

هل تعلم اني اول مرة اعلم ان هناك stored procedure في الاكسيس Access

الملف شرحه ولا اجمل صحيح ان خير الكلام ,, ماقل ودل

بارك الله فيك ...............

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

ولكن في سؤال في خاطري يراودني الان وبعد ان رأيت الفيديو .....

كيف يمكن التعويض بقيمة ال parameter بالكود ؟؟ :)

..

تم تعديل هذه المشاركة بواسطة dot.net2008 في 11 فبراير 2010 في 23:17

#22
اقتباس
كيف يمكن التعويض بقيمة ال parameter بالكود ؟؟

معذرة

سؤالك غير مفهوم حاول شرح مشكلتك أو سؤالك الذي يدور في خاطرك بشكل من التفصيل حتي يتم الاجابة علي سؤالك بشكل سليم

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#23
محمد فؤاد تركي كتب:

معذرة

سؤالك غير مفهوم حاول شرح مشكلتك أو سؤالك الذي يدور في خاطرك بشكل من التفصيل حتي يتم الاجابة علي سؤالك بشكل سليم

ان شاء الله ,, سوف اوضح اكثر اخي ...

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

في الفيديو الذي شرحت به حضرتك طريقة تعريف باراميتر في القاعدة (stored procedure)

وعندما دخلت في بيئة التطوير دوت نيت 2008 وقمت بإنشاء تقرير crystall report جديد

عندما تقوم بفتح او تحديث التقرير ,, يطلب منك قيمة الباراميتر وقمت بإدخاله يدوياً ,,, مثلاً لو كتبت في القيمة التابعة للباراميتر المطلوب منك قيمة 'ahmad'

سوف يظهر لك البيانات التي تخص هذا الاسم

..............

الطيب السؤال هنا . كيف يمكن التعويض بقيمة هذا الباراميتر بالكود (sql) يعني كمثال ,,

select * from users-info where ? = 'ahmad'

أو انه يجب عليك انشاء procedure جديد ,, اذا كان كذلك, ارجوا توضيح هذه الفكرة

لجهلي بالتعامل مع ال stored procedures :blush:

جمعة مباركة ...

#24

من خلال الكود الذي كتبتة هل تقصد تثبيت القيمة بمعني آخر هل تريد أن يفتح التقرير دائما علي الاسم ahmed فقط دائماً وأبداً

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#25
محمد فؤاد تركي كتب:

من خلال الكود الذي كتبتة هل تقصد تثبيت القيمة بمعني آخر هل تريد أن يفتح التقرير دائما علي الاسم ahmed فقط دائماً وأبداً

لا ابداً اخي ولكن اريد ان اعرف الطريقة لاسند له قيمة ال textbox مثلاً

او قيمة ال cell في ال datagridview

ارجوا ان تكون قد وضحت الفكرة ..

مثال صغير ...

select * from user-info where ? = '"& textbox1.text &"'

هذه هي الفكرة التي اريد الوصول لها

حيث اريد في كل مرة يتم فيها فتح التقرير يأخد قيمة الباراميتر من ال textbox1

ودمتم :)

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