تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] باراميتر و LISTBOX
#1
Question 
أصدقائي المبرمجين ....


* لدي مشروع معتمد على قاعدة بيانات متصلة access

* المطلوب الكود الخاص بالباراميتر الذي يفلتر البيانات اعتمادا على محتويات ليست بوكس (Listbox)

مثال الكود :
كود :
Private Sub setfiltersparameters1()

             Me.payrollTableAdapter.Fill(Me.embloyDataSet.payroll)

       Dim date1 As New ReportParameter("date", payroll.DateTextBox.Text)

       ReportViewer1.LocalReport.SetParameters(New ReportParameter() {date1})

       ReportViewer1.RefreshReport()
   End Sub
* في المثال السابق يعتمد على بيان Textbox
ماهي الطريقة التي تجعل الباراميتر يعتمد على items موجودة في listbox مهما تعددت
اشكر لكم انصاتكم
وشكرا
الرد }}}
تم الشكر بواسطة:
#2
معقول الموضوع صعب لهدرجة تعبت وانا ادور

لو يقدر احد يساعني اريد عمل تقرير بمحددات مختلفة موجودة قيمها في LISTBOX

شكرا
الرد }}}
تم الشكر بواسطة:
#3
الموضوع شكله فعلا صعب انا بقالي مدة بدور ومش لاقي حل
انا في نفس مشكلتك عاوز جميع items اللي في listbox وتكون قيمه الباراميتر بتاع report viewer ومش لاقي حل
بقالي والله أكثر من اسبوع لو حضرتك وصلت لحل اتمنى ترفعه
الرد }}}
تم الشكر بواسطة:
#4
سوالي للإخوة .... هل العناصر الموجودة في الليست بوكس محددة (أي ذات قيم معلومة لديكم ... مثلاً ليست بوكس عناصره ذكر ,أنثى ) فيمكنكم تكرار جملة إسناد الباراميترات على عدد عناصر الليست بوكس قبل إظهار التقرير (ReportViewer) كتالي :

          
كود :
;MyReport.SetParameterValue("@Male", listBox1.items[0].toString())
           ;MyReport.SetParameterValue("@Female", listBox1.items[1].toString())
           ;()GenderForm GF = new GenderForm
           ;GF.crystalReportViewer1.ReportSource = MyReport
;()GF.ShowDialog
 

أما اذا كانت الليست بوكس ذات عناصر غير معروفة أو متغيرة فيمكنك كتابة جملة إسناد الباراميترات داخل جملة تكرارية (مثلاً for) وايضاً قبل إظهار التقرير كتالي :


                                                                                 
كود :
for(int i=0; i<listBox1.Items.Count; i++)
                                                                                             }
                ; MyReport.SetParameterValue(gender[i], listBox1.Items[i].ToString())
                                                                                {
                                             ;()GenderForm GF = new GenderForm
                ;GF.crystalReportViewer1.ReportSource = MyReport
                                                                         ;()GF.ShowDialog


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

ملاحظة: الكود السابق مكتوب بلغة السي شارب كتبته بهذه اللغة لاني لا أعرف لغة الفيجول بيسك ولاني اعتقد انمها متشابهتين.... وآمل ان أكون قد فهمت المشكلة لديكم وآمل ان يكون الشرح واضحاً .
الرد }}}
تم الشكر بواسطة:
#5
والله كثر خيرك.... جربت فكرتك بس برده مفيش فايدة
في حالتي الليست بوكس عناصه متغيرة
وده الكود اللي حاولت فيه اجرب فكرتك

كود :
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       If IsPostBack Then
           Dim i As Integer
           For i = 0 To ListBox2.Items.Count - 1
           ObjectDataSource1.SelectParameters("HSort").DefaultValue = ListBox2.Items(i).ToString()
 Next
           ObjectDataSource1.DataBind()
           ReportViewer1.LocalReport.Refresh()

       End If
   End Sub
لو في اي خطأ ياريت تفيدوني
الرد }}}
تم الشكر بواسطة:
#6
إلى الآن ولم أجد حل
في المرفقات المثال أرجو مساعدتي أريد ما يتم اختياره في listbox2 يظهر خلال فترة محددة في التقرير


الملفات المرفقة
.rar   WebApplication1.rar (الحجم : 430.68 ك ب / التحميلات : 72)
الرد }}}
تم الشكر بواسطة:
#7
بصراحة لم اطلع على مرفقك الاخير ولكن اليك هذا المستند فيه شويه شرح ان شاء الله ان ضالتك موجودة فيه .


الملفات المرفقة
.docx   text2.docx (الحجم : 631 ك ب / التحميلات : 41)
الرد }}}
تم الشكر بواسطة:
#8
إقتباس :المطلوب الكود الخاص بالباراميتر الذي يفلتر البيانات اعتمادا على محتويات ليست بوكس

الصراحة صيغة سؤالك فيها لغز وهذا جعلني متردد في الرد.
لكن .. هل القصد اظهار بيانات اخرى مرتبطة بالسجل الذي فيه البند المحدد في الـ Listbox؟
اذا نعم...
فقم بنقل الـ Position الى موضع القيمة المحددة في الـ Listbox
مثال:
في حدث Listbox1_selectedindexchanged
PHP كود :
me.bindingcontext(datatable).position=Listbox1.selectedindex 
الرد }}}
تم الشكر بواسطة:
#9
للأسف إلى الان لم اجد حل ، انا وضعت المثال في المرفقات ..
هناك عدد 2 ليست بوكس
الاول في الكل والثاني فيه ما يتم اختياره من الليست الاول وبناء على ذلك يتم عرض تقرير بما تم اختياره يعني جميع القيم الموجودة في الليست بوكس وده طبعا بيكون عن طريق مالتي باراميتر بس مش عارف ازاي اسويها
المثال واضح ارجو لاهل الخبرة الاطلاع عليه ولو في حل ارجو مساعدتي
الرد }}}
تم الشكر بواسطة:
#10
الى الان لم يتم التوصل الى حل

طب ايه الخطأ في الكود ده لان التقرير لا يظهر نهائي

PHP كود :
Protected Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        
        If IsPostBack Then
            Dim ds 
As New DataSet
            Dim cmd 
As New SqlCommand

            Dim con 
As New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\ClaimDB.mdf;Integrated Security=True")

 
           con.Open()


 
           Dim sqlsql1sql2 As String

            sql 
"select * from GHTable "

 
           sql1 " where GHDate between convert(date,'" txtFrom.Text "',103) and convert(date,'" txtTo.Text "',103) "
 
           If ListBox2.Items.Count 0 Then
                For i 
0 To ListBox2.Items.Count 1
                    If sql2 
"" Then
                        sql2 
sql2 "and GHSort=N'" ListBox2.Items(i).Value.ToString "' "
 
                   Else
                        sql2 
sql2 "or GHSort=N'" ListBox2.Items(i).Value.ToString "' "
 
                   End If
 
               Next
            End 
If
 
           sql sql sql1 sql2
            cmd
.CommandText sql
            cmd
.Connection con
            cmd
.CommandType CommandType.Text

            Dim da 
As New SqlDataAdapter(cmd)
 
           da.Fill(ds)

 
           con.Close()
 
           ReportViewer1.LocalReport.ReportPath "ReportGH1.rdlc"
 
           Dim rds As New Microsoft.Reporting.WebForms.ReportDataSource("DataSet1"ds.Tables(0))
 
           ReportViewer1.LocalReport.DataSources.Clear()
 
           ReportViewer1.LocalReport.DataSources.Add(rds)
 
           ReportViewer1.LocalReport.Refresh()
 
       End If
 
       
    End Sub 
الرد }}}
تم الشكر بواسطة:


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم