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

مشكلة في عرض التقارير بعد تنصيب برنامجي

بدأه زينب العراقية في 25 يونيو 2013 · 22 رد · 1,990 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اخوتي الاعزاء واجهتني مشكلة وهي 

بعد ان اكملت برمجة مشروعي بالفيجول دوت نت  2008  

وقمت بتحزيم البرنامج وعمل نسخة setup 

قمت بتنصيب البرنامج على حاسبة اخرى وهو يعمل الا ان المشكلة عندما اذهب الى فقرة التقارير واريد ان اعرض تقرير معين يظهر لي صندوق حوار يطلب فيه user_id  و password   كما في الصورة المرفقة مع العلم اني استخدمت الكريستال ريبورت في تصميم التقارير ...

 

ارجو مساعدتي بافكاركم جزاكم الله خيرا

 

post-275798-0-74152100-1372143913_thumb.

#2

السلام عليكم ..

  1. تقرير الكريستال ريبورت لا يستطيع تحديد مسار قاعدة البيانات
  2. تغيير السيرفر لتقارير كريستال ريبورت.

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

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

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
        Dim cryRpt As New ReportDocument
        Dim crtableLogoninfos As New TableLogOnInfos
        Dim crtableLogoninfo As New TableLogOnInfo
        Dim crConnectionInfo As New ConnectionInfo
        Dim CrTables As Tables
        Dim CrTable As Table

        cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt")

        With crConnectionInfo
            .ServerName = "YOUR SERVER NAME"
            .DatabaseName = "YOUR DATABASE NAME"
            .UserID = "YOUR DATABASE USERNAME"
            .Password = "YOUR DATABASE PASSWORD"
        End With

        CrTables = cryRpt.Database.Tables
        For Each CrTable In CrTables
            crtableLogoninfo = CrTable.LogOnInfo
            crtableLogoninfo.ConnectionInfo = crConnectionInfo
            CrTable.ApplyLogOnInfo(crtableLogoninfo)
        Next

        CrystalReportViewer1.ReportSource = cryRpt
        CrystalReportViewer1.Refresh()
    End Sub
End Class
#4

شكرا اخي العزيز  على الرد جزاك الله خيرا ساقوم بقراءة الموضوع 

 

للعلم اني استخدم قاعدة بيانات اكسس وليس sql server

#5

شكرا للاخ العزيز محمد.... اين يتوجب علي ان اضع الكود اعلاه 

#6

احتاج ادخل للتقارير بدون يوزر نيم وباسورد 

#7

الاخت العزيزة سوف ارفق لكى غدا باذن الله تعالى تطبيق بسيط به قاعدة بيانات اكسس ومرتبط معه كريستال ريبوت وبدون كلمة مرور واسم مستخدم

#8

شكرا لك سانتظرك فانا في امس الحاجة له وفقك الله لكل خير 

#9

الاخت العزيزة هذا مثال بسيط عن قاعدة بيانات اكسس وتطبيق دوت نت ومرتبط معه كريستال ريبورت

ملاحظة انا اعمل على الاصدار الاخير من الدوت نت وايضا الاصدار الاخير من الكريستال ريبورت ارجو مرعاة ذلك فى حال لم يعمل معك ارجو تحرير الملف الدى ينتهى بالامتداد (VB)

والاستفادة من الكود المكتوب

ملاحظة اخرى فى قواعد البيانات اكسس يكون دائما سبب الخطا لديك فى تحديد مسار قاعدة البيانات لذا ارجو مرعاة ذلك عند الربط

الملف فى المرفقات

تحياتى

CrystalReportsApplication.zip

#11

كل الشكر والتقدير لجهودكم الطيبة ولكن اخي العزيز انا اعمل على فيجول دوت نت 2008 .....

هل هناك اختلاف في الكودات .... عندما وضعت الكود وجدت بعضها لا يعمل ارجو المساعدة 

#12

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

#13

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

بقي شيء واحد ان التقرير لايعرف مسار قاعدة البيانات بعد ان انقل البرنامج على جهاز اخر او قوم بتنصيبه على درايف اخر في نفس الجهاز  ....يقوم باسترجاع البيانات القديمة .....ما الحل

والكود هو التالي

Private Sub CrystalReportViewer1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Load
Try
         Dim OleDbConnection1 As New OleDbConnection(constr)

         OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                  Application.StartupPath & "\travel.mdb;Jet OLEDB:Database ;"

      Dim crtableLogoninfos As New TableLogOnInfos()

      Dim crtableLogoninfo As New TableLogOnInfo()

      Dim crConnectionInfo As New ConnectionInfo()

 

      Dim CrTables As Tables

   
      Dim CrTable As Table
Dim cryrpt As New ReportDocument
cryrpt.Load("e:\alhany\alhany\alhany\crystaltrips.rpt")

With crConnectionInfo
       .DatabaseName = Application.StartupPath & "\travel.mdb"

End With

CrTables = cryrpt.Database.Tables

  
For Each CrTable In CrTables
      crtableLogoninfo = CrTable.LogOnInfo

     crtableLogoninfo.ConnectionInfo = crConnectionInfo

     CrTable.ApplyLogOnInfo(crtableLogoninfo)
Next

     
        CrystalReportViewer1.ReportSource = cryrpt

Catch ex As Exception

MsgBox(ex.Message)
End Try

End Sub 

#14

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

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

تحياتى وهذا هو الكود المطلوب

' فضاء قواعد البيانات
Imports System.Data.OleDb
'فضاء التقارير
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports CrystalDecisions.Windows.Forms

Public Class Form1
    Public ConStr As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source ={0}\test.mdb", Application.StartupPath)
    Public Con As New OleDbConnection(ConStr)
    Public Ds As New DataSet

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Con.Close()
        Ds.Clear()
        Ds.Dispose()
        Dim rpt As New CrystalReport1
'تعبة الداتا ست بالبيانات
        Try
            
            Con.Open()
            Dim SqlStrGet As String = "SELECT * FROM info "
            SqlStrGet &= String.Format("WHERE ID='{0}'", TextBox1.Text)
            Dim DataAdapterGet As New OleDbDataAdapter(SqlStrGet, Con)
            DataAdapterGet.Fill(Ds, "info")
            Con.Close()
            If Me.BindingContext(Ds, "info").Count = 0 Then
                MsgBox("الرجاء اعادة المحاولة")

            Else
                'استدعاء التقرير وتعبة البيانات من الداتا ست
                rpt.SetDataSource(Ds)
                CrystalReportViewer1.ReportSource = rpt
                CrystalReportViewer1.Visible = True

            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message, "خطاء", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)

        End Try

    End Sub

End Class

تم تعديل هذه المشاركة بواسطة mohamad1977 في 28 يونيو 2013 في 10:35

#15

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

 

بقي عندي شيء بسيط وهي هذه الرسالة التي ظهرت عندي حديثا بعد ان وضعت هذه الاكواد تظهر عند تنفيذ التقرير وهي بمثابة تنبيه كما اعتقد وبعدها يعمل التقرير بصورة صحيحة ... كيف اتخلص منها ؟

 

Format of Intialization String does not conform to specification starting at index 90 

 

#16

بعد التحية

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

#17

هذا هو الكود كاملا  اخي العزيز 


 


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


Imports CrystalDecisions.CrystalReports.Engine

Imports CrystalDecisions.Shared

Imports System.Data

Imports System.Data.OleDb

Public Class allticketsrep

    Public Con As New OleDbConnection(constr)

    Public Ds As New DataSet

    Private Sub CrystalReportViewer1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Load

        Con.Close()

        Ds.Clear()

        Ds.Dispose()

        Dim rpt As New Crystaltickets

        'تعبئة الداتا ست بالبيانات 

        Try


            Con.Open()

            Dim SqlStrGet As String = "SELECT * FROM tickets "


            Dim DataAdapterGet As New OleDbDataAdapter(SqlStrGet, Con)

            DataAdapterGet.Fill(Ds, "tickets")

            Con.Close()

            If Me.BindingContext(Ds, "tickets").Count = 0 Then

                MsgBox("الرجاء اعادة المحاولة")


            Else

                'استدعاء التقرير وتعبة البيانات من الداتا ست

                rpt.SetDataSource(Ds)

                CrystalReportViewer1.ReportSource = rpt

                CrystalReportViewer1.Visible = True


            End If


        Catch ex As Exception

            MessageBox.Show(ex.Message, "خطاء", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)


        End Try


        Try

            Dim OleDbConnection1 As New OleDbConnection(constr)

            OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _

            Application.StartupPath & "\travel.mdb;Jet OLEDB:Database ;"

            Dim crtableLogoninfos As New TableLogOnInfos()

            Dim crtableLogoninfo As New TableLogOnInfo()

            Dim crConnectionInfo As New ConnectionInfo()

            Dim CrTables As Tables

            Dim CrTable As Table

            Dim cryrpt As New ReportDocument

            cryrpt.Load("\alhany\alhany\alhany\crystalickets.rpt")


            With crConnectionInfo

                .DatabaseName = Application.StartupPath & "\travel.mdb"


            End With


            CrTables = cryrpt.Database.Tables

            For Each CrTable In CrTables

                crtableLogoninfo = CrTable.LogOnInfo

                crtableLogoninfo.ConnectionInfo = crConnectionInfo

                CrTable.ApplyLogOnInfo(crtableLogoninfo)

            Next

            CrystalReportViewer1.ReportSource = cryrpt

        Catch ex As Exception

            MsgBox(ex.Message)

        End Try


    End Sub



End Class

#18

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

تحياتى

تم تعديل هذه المشاركة بواسطة mohamad1977 في 30 يونيو 2013 في 23:15

#19
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="WindowsApplication1.My.MySettings.travelConnectionString"
            connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\travel.mdb"
            providerName="System.Data.OleDb" />
    </connectionStrings>
    <system.diagnostics>
        <sources>
            <!-- This section defines the logging configuration for My.Application.Log -->
            <source name="DefaultSource" switchName="DefaultSwitch">
                <listeners>
                    <add name="FileLog"/>
                    <!-- Uncomment the below section to write to the Application Event Log -->
                    <!--<add name="EventLog"/>-->
                </listeners>
            </source>
        </sources>
        <switches>
            <add name="DefaultSwitch" value="Information" />
        </switches>
        <sharedListeners>
            <add name="FileLog"
                 type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
                 initializeData="FileLogWriter"/>
            <!-- Uncomment the below section and replace APPLICATION_NAME with the name of your application to write to the Application Event Log -->
            <!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
        </sharedListeners>
    </system.diagnostics>
</configuration>

اتعبتك معي اخي الكريم ربي يخليك 

هذا هو الكود الي وجدته في الملف app ولم افهم ما الخطأ؟ 

#20
زينب العراقية كتب:

 

هذا هو الكود كاملا  اخي العزيز 

 

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

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Data
Imports System.Data.OleDb
Public Class allticketsrep
    Public Con As New OleDbConnection(constr)
    Public Ds As New DataSet
    Private Sub CrystalReportViewer1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Load
        Con.Close()
        Ds.Clear()
        Ds.Dispose()
        Dim rpt As New Crystaltickets
        'تعبئة الداتا ست بالبيانات 
        Try

            Con.Open()
            Dim SqlStrGet As String = "SELECT * FROM tickets "

            Dim DataAdapterGet As New OleDbDataAdapter(SqlStrGet, Con)
            DataAdapterGet.Fill(Ds, "tickets")
            Con.Close()
            If Me.BindingContext(Ds, "tickets").Count = 0 Then
                MsgBox("الرجاء اعادة المحاولة")

            Else
                'استدعاء التقرير وتعبة البيانات من الداتا ست
                rpt.SetDataSource(Ds)
                CrystalReportViewer1.ReportSource = rpt
                CrystalReportViewer1.Visible = True

            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message, "خطاء", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)

        End Try

        Try
            Dim OleDbConnection1 As New OleDbConnection(constr)
            OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            Application.StartupPath & "\travel.mdb;Jet OLEDB:Database ;"
            Dim crtableLogoninfos As New TableLogOnInfos()
            Dim crtableLogoninfo As New TableLogOnInfo()
            Dim crConnectionInfo As New ConnectionInfo()
            Dim CrTables As Tables
            Dim CrTable As Table
            Dim cryrpt As New ReportDocument
            cryrpt.Load("\alhany\alhany\alhany\crystalickets.rpt")

            With crConnectionInfo
                .DatabaseName = Application.StartupPath & "\travel.mdb"

            End With

            CrTables = cryrpt.Database.Tables
            For Each CrTable In CrTables
                crtableLogoninfo = CrTable.LogOnInfo
                crtableLogoninfo.ConnectionInfo = crConnectionInfo
                CrTable.ApplyLogOnInfo(crtableLogoninfo)
            Next
            CrystalReportViewer1.ReportSource = cryrpt
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub

   
End Class

اختى بعد تجربة الكود المرفق اتضح ان الخطا لديك فى طريقة الاتصال بقاعدة البيانات

والصحيح ان تقوم بالاتى

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Data
Imports System.Data.OleDb
Public Class allticketsrep
    Public ConStr As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source ={0}\travel.mdb", Application.StartupPath)
Public Con As New OleDbConnection(constr)
    Public Ds As New DataSet
    Private Sub CrystalReportViewer1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Load
        Con.Close()
        Ds.Clear()
        Ds.Dispose()
        Dim rpt As New Crystaltickets
        'تعبئة الداتا ست بالبيانات 
        Try

            Con.Open()
            Dim SqlStrGet As String = "SELECT * FROM tickets "

            Dim DataAdapterGet As New OleDbDataAdapter(SqlStrGet, Con)
            DataAdapterGet.Fill(Ds, "tickets")
            Con.Close()
            If Me.BindingContext(Ds, "tickets").Count = 0 Then
                MsgBox("الرجاء اعادة المحاولة")

            Else
                'استدعاء التقرير وتعبة البيانات من الداتا ست
                rpt.SetDataSource(Ds)
                CrystalReportViewer1.ReportSource = rpt
                

            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message, "خطاء", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign)

        End Try
End Sub


End Class

تم تعديل هذه المشاركة بواسطة mohamad1977 في 2 يوليو 2013 في 07:49

#21

جربت الكود اخويه الي اعطيتنياه نسخته تماما ولاتزال نفس المشكلة 

#22

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

Clean Solution

بعد ذلك قومى بالتجربة

#23

كيف يتم عمل clean solution لم اجرب عمله ... فائق تقديري لتعاونك

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…