منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : باراميتر و LISTBOX
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
أصدقائي المبرمجين ....


* لدي مشروع معتمد على قاعدة بيانات متصلة 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 مهما تعددت
اشكر لكم انصاتكم
وشكرا
معقول الموضوع صعب لهدرجة تعبت وانا ادور

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

شكرا
الموضوع شكله فعلا صعب انا بقالي مدة بدور ومش لاقي حل
انا في نفس مشكلتك عاوز جميع items اللي في listbox وتكون قيمه الباراميتر بتاع report viewer ومش لاقي حل
بقالي والله أكثر من اسبوع لو حضرتك وصلت لحل اتمنى ترفعه
سوالي للإخوة .... هل العناصر الموجودة في الليست بوكس محددة (أي ذات قيم معلومة لديكم ... مثلاً ليست بوكس عناصره ذكر ,أنثى ) فيمكنكم تكرار جملة إسناد الباراميترات على عدد عناصر الليست بوكس قبل إظهار التقرير (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  

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

كود :
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
لو في اي خطأ ياريت تفيدوني
إلى الآن ولم أجد حل
في المرفقات المثال أرجو مساعدتي أريد ما يتم اختياره في listbox2 يظهر خلال فترة محددة في التقرير
بصراحة لم اطلع على مرفقك الاخير ولكن اليك هذا المستند فيه شويه شرح ان شاء الله ان ضالتك موجودة فيه .
إقتباس :المطلوب الكود الخاص بالباراميتر الذي يفلتر البيانات اعتمادا على محتويات ليست بوكس

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

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

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 2