صفحه 1 از 5 123 ... آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 43

موضوع: آموزش فیلتر داده ها بر مبنای چند محدودیت اختیاری و نمایش در لیست باکس

  1. #1


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %

    آموزش فیلتر داده ها بر مبنای چند محدودیت اختیاری و نمایش در لیست باکس

    درود

    در این تاپیک هدف ارائه راهکاری برای جستجوی چندگانه است و قصد توضیح دادن کد هارو ندارم ، برای اجرا شدن کد ها ابتدا از مسیر VBA/Tools/Refrences گزینه Microsoft Activex Data objects رو فعال کنید



    فرض کنید جدولی با داده هایی به شکل زیر دارید






    هدف فیلتر کردن داده ها به صورت گام به گام و همراه با چندین شرط متفاوت و در نهایت رسیدن به رکورد مورد نیاز و نمایش آن در لیست باکس یک فرم است
    گام اول:
    ابتدا فرم مورد نیاز خود را طراحی کنید و آیتم های مورد نیاز خود را در قالب یک تکست باکس یا کمبو باکس ایجاد نمایید





    از مسیری که در تصویر زیر مشخص شده است نسبت به نام گذاری تکست باکس ها (یا کمبو باکس ها) به روش زیر اقدام نمایید





    هر تکست باکس می بایست نام ستون متناظر خود در شیت اکسل را به اضافه حروف flt در پایان آن داشته باشد به عنوان مثال ستون نام در شیت به fname نامگذاری شده است پس تکست باکس آن را با fnameflt نام گذاری کنید.

    گام سوم:
    کانکشن مورد نیاز به شیت حاوی داده ها ایجاد کنید ، با توجه به اینکه این کانکشن در طول اجرای سابروتین ها مورد نیاز است متغیر های مربوطه را به صورت public تعریف میکنیم:



    کد PHP:
    Public cnn As ADODB.Connection
    Public rsReserve As ADODB.Recordset
    Public Sub constr()
    Dim strSQL As String
    Dim fpath 
    As String
    Dim str 
    As String
    Set cnn 
    = New ADODB.Connection
    Set rs 
    = New ADODB.Recordset
    Set rsReserve 
    = New ADODB.Recordset
    fpath 
    ThisWorkbook.Path Application.PathSeparator ThisWorkbook.Name
    str 
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" _
                            
    fpath """;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
    strSQL "select*from [sheet1$]"
    cnn.Open str
    rsReserve
    .Open strSQLcnnadOpenForwardOnlyadLockReadOnlyadCmdText
    End Sub 
    کد زیر شیت حاوی اطلاعات را انتخاب میکند
    کد PHP:

    strSQL 
    "select*from [sheet1$]" 

    گام سوم:
    با استفاده از رویداد click کامند باتن تعبیه شده بر روی یوزر فرم کدهای زیر را وارد کنید:


    کد PHP:
    Private Sub CommandButton1_Click()
    Dim cCont As Control
    Dim fildname 
    As String
    Dim filtername 
    As String
    Dim srtfill 
    As String
    Call constr
        
    For Each cCont In Me.Controls
    If UCase(Right(cCont.Name3)) = "FLT" Then
    fildname 
    Mid(cCont.Name1Len(cCont.Name) - 3)
    filtername cCont.Value
    If filtername <> "" Then
    srtfill 
    srtfill flt(fildnamefiltername)

    End If
    End If

        
    Next cCont
       srtfill 
    Mid(srtfill1Len(srtfill) - 5)
        
    Call subfilter(srtfill)
           
    Call filllistbox

    Set rsReserve 
    Nothing
    Set rs 
    Nothing
    cnn
    .Close
    End Sub 

    این رویه در ابتدا اقدام به برقراری کانکشن نموده و با تشخیص مقادیری که شما وارد کرده اید سابروتین زیر را که اقدام به ساخت استرینگ مورد نیاز برای فیلتر کردن داده می نماید فراخوانی می کند.

    کد PHP:


    Public Function flt(fildname As Stringfiltername As String)
    flt " " fildname "  =    '" filtername "' AND "
    End Function 
    گام چهارم:

    بعد از ساخت استرینگ مورد نیاز قطعه کد زیر فراخوانی شده و داده ها فیلتر می شوند.

    کد PHP:

    Sub subfilter
    (srtfill As String)
    rsReserve.Filter srtfill
    End Sub 
    گام پنجم:

    در پایان با فراخوانی سابروتین زیر داده ها در لیست باکس وارد می شود

    کد PHP:
    Private Sub filllistbox()

        
    Dim I As IntegerAs Integer

        With ListBox1
       
            
    .BoundColumn 1
            
    .ColumnCount rsReserve.Fields.Count
            
    .ColumnHeads False
            
    .ColumnWidths ""
            
    .ControlSource ""
            
    .RowSource ""
            
    .Clear
            I 
    0
         
            
    If Not rsReserve.BOF Then rsReserve.MoveFirst
            
    If rsReserve.EOF True Then
            MsgBox 
    "this record nor exist"
            
    End If
            Do 
    Until rsReserve.EOF
                I 
    1
                
    .AddItem
                
    For 1 To .ColumnCount
                    
    .List(11) = rsReserve.Fields(1).Value
                Next J
               rsReserve
    .MoveNext
            Loop
        End With


    End Sub 
    دقت کنید در گزاره with نام لیست باکس را صحیح وارد کنید.
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.
    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط ~M*E*H*D*I~ : 2018/02/18 در ساعت 19:28




  2.  

  3. #2

    آخرین بازدید
    2018/01/21
    تاریخ عضویت
    May 2014
    نوشته ها
    2
    امتیاز
    13
    سپاس
    0
    سپاس شده
    3 در 2 پست
    تعیین سطح نشده است

    سلام
    ممنون. اما چرا از جدا.ل محوری (pivottable) استفاده نکنیم؟
    با اونم خیلی راحت میشه همین کار رو انجام داد. نظرتون چیه؟


  4. #3


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %

    نقل قول نوشته اصلی توسط hamedpersian نمایش پست ها
    سلام
    ممنون. اما چرا از جدا.ل محوری (pivottable) استفاده نکنیم؟
    با اونم خیلی راحت میشه همین کار رو انجام داد. نظرتون چیه؟
    راه که زیاده
    پیشنهاد میکنم برای این موردی که مطرح کردید یک آموزش تهیه کنید که همه بهره ببریم
    ویرایش توسط ~M*E*H*D*I~ : 2014/06/04 در ساعت 22:58




  5. #4


    آخرین بازدید
    2020/11/02
    تاریخ عضویت
    October 2010
    محل سکونت
    قائمشهر
    نوشته ها
    114
    امتیاز
    54
    سپاس
    150
    سپاس شده
    53 در 27 پست
    تعیین سطح نشده است

    با سلام
    يه سوال
    چطوري ليست باكس اين فرم از راست به چپ شده؟(البته معذرت ميخوام كه از اينهمه ماكروهاي قابل تحسين نظرم به اين مورد جلب شده)
    اگر تنهاترين تنهايان شوم بازهم خدا هست،
    او جانشين تمام نداشته هاي من است...!

  6. #5


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %

    البته اگر منظور شمارو درست متوجه شده باشم
    تصویر پیوست رو مشاهده کنید

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام:  2014-07-21 12-28-49 ب-ظ.jpg
مشاهده: 76
حجم:  49.6 کیلو بایت




  7. #6


    آخرین بازدید
    2020/11/02
    تاریخ عضویت
    October 2010
    محل سکونت
    قائمشهر
    نوشته ها
    114
    امتیاز
    54
    سپاس
    150
    سپاس شده
    53 در 27 پست
    تعیین سطح نشده است

    با تشكر از پاسخ شما
    منظور من ستون هاي اين ليست باكسه كه از راست رديف/نام و ... داره
    درحالي كه معمولا توي ليست باكس رديف يا هر ستون اولي كه ميخوايم نمايش بديم از چپ شروع ميشه
    اگر تنهاترين تنهايان شوم بازهم خدا هست،
    او جانشين تمام نداشته هاي من است...!

  8. #7


    آخرین بازدید
    2020/11/02
    تاریخ عضویت
    October 2010
    محل سکونت
    قائمشهر
    نوشته ها
    114
    امتیاز
    54
    سپاس
    150
    سپاس شده
    53 در 27 پست
    تعیین سطح نشده است

    نقل قول نوشته اصلی توسط 4017 نمایش پست ها
    با تشكر از پاسخ شما
    منظور من ستون هاي اين ليست باكسه كه از راست رديف/نام و ... داره
    درحالي كه معمولا توي ليست باكس رديف يا هر ستون اولي كه ميخوايم نمايش بديم از چپ شروع ميشه
    دوستان اساتيد كسي نظري نداره؟
    اگر تنهاترين تنهايان شوم بازهم خدا هست،
    او جانشين تمام نداشته هاي من است...!

  9. #8


    آخرین بازدید
    2023/08/14
    تاریخ عضویت
    March 2010
    محل سکونت
    تهران
    نوشته ها
    2,034
    امتیاز
    4508
    سپاس
    2,467
    سپاس شده
    4,096 در 1,241 پست
    سطح اکسل
    85.00 %

    khakzad به Yahoo ارسال پیام
    سلام
    جناب وطن پرست پاسخ شما رو دادن!!1
    اون تنظیم رو انجام میدید
    اما موقع تخصیص داده ها به لیست باکس به این دقت کنید که الولین مورد رو میاره از سمت چپ، پس باید اخرین مورد رو در ستون اول قرار بدید و همینطور به ترتیب
    یعنی از اخر بیاید اول


  10. #9


    آخرین بازدید
    2020/11/02
    تاریخ عضویت
    October 2010
    محل سکونت
    قائمشهر
    نوشته ها
    114
    امتیاز
    54
    سپاس
    150
    سپاس شده
    53 در 27 پست
    تعیین سطح نشده است

    نقل قول نوشته اصلی توسط khakzad نمایش پست ها
    سلام
    جناب وطن پرست پاسخ شما رو دادن!!1
    اون تنظیم رو انجام میدید
    اما موقع تخصیص داده ها به لیست باکس به این دقت کنید که الولین مورد رو میاره از سمت چپ، پس باید اخرین مورد رو در ستون اول قرار بدید و همینطور به ترتیب
    یعنی از اخر بیاید اول
    پاسخ شما متين
    اما من توي همين فايلي كه اينجا پيوست شده ديدم كه ستونها از راست به چپ چيده شدن و ليست باكس هم همينو نشون داده. بازم ممنون
    اگر تنهاترين تنهايان شوم بازهم خدا هست،
    او جانشين تمام نداشته هاي من است...!

  11. #10


    آخرین بازدید
    2022/12/05
    تاریخ عضویت
    October 2011
    محل سکونت
    مشهد
    نوشته ها
    4,374
    امتیاز
    12614
    سپاس
    4,596
    سپاس شده
    11,990 در 3,203 پست
    سطح اکسل
    70.00 %

    نقل قول نوشته اصلی توسط 4017 نمایش پست ها
    پاسخ شما متين
    اما من توي همين فايلي كه اينجا پيوست شده ديدم كه ستونها از راست به چپ چيده شدن و ليست باكس هم همينو نشون داده. بازم ممنون
    تو فایل پیوست جدول اطلاعات به عنوان سورس لیست باکس داده شده روش شما هم به همین صورته یا خیر؟




صفحه 1 از 5 123 ... آخرینآخرین

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. افزونه مدیریت تیبل
    توسط ~M*E*H*D*I~ در انجمن برنامه های کاربردی اکسل
    پاسخ ها: 0
    آخرين نوشته: 2014/03/27, 11:14
  2. طراحی تیرچه کرومیت به روش تنش مجاز asd
    توسط alieddy0 در انجمن اسپريد شيت هاي مهندسي - Engineering spreadsheet
    پاسخ ها: 0
    آخرين نوشته: 2014/03/17, 16:12
  3. پاسخ ها: 0
    آخرين نوشته: 2013/11/14, 17:11
  4. آپدیت پیوت تیبل
    توسط mokaram در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 3
    آخرين نوشته: 2013/02/21, 14:16
  5. مشکل اینسرت در یک تیبل در موقع پروتکت بودن شیت
    توسط بهنام در انجمن پیوت تیبل و پايگاه داده - Pivot Table and Database
    پاسخ ها: 3
    آخرين نوشته: 2012/03/10, 19:30

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

آموزش پيوت تيبل

فیلتر کردن لیست باکس اکسل

روش ساخت کمبو باکس در اکسل 2010

چیدن تکس باکس ها در اکسل

لیست باکس ویژوال بیسیک چند ردیف

فیلتر کردن لیست باکس یوزر فرم در اکسل

اموزش فیلتر کردن محصولات در php

لیست چندین داده

فیلترکردن لیست باکس exceliran.com

فیلتر داده ها در php

کاربرد additem درلیست باکس در vb6

نمایش اطلاعات فیلتر شده در لیست باکس

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است