فرم جستجوی پیشرفته با اشکال مواجه شده

Collapse
این تاپیک قفل است.
X
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • حانیه

    • 2015/12/02
    • 19

    [حل شده] فرم جستجوی پیشرفته با اشکال مواجه شده

    سلام خدمت اساتید ارجمند خودم در این سایت
    از راهنمایی ها و آموزش های شما تشکر دارم اجرکم عندالله
    در فرم پیوست اولا که چون فایل ماکرو انیبل آپلود نشد فرمتش رو عوش کردم لطفا با فرمت ماکرو انیبل save as شود
    من وقتی در تکست باکس یک جستجو را انجام می دهم مشکلی نیست ولی وقتی یک جستجو را با دو آیتم میخواهم انجام دهم و از تکست باکس دوم استفاده می کنم در بعضی از موارد نتیجه جستجو با مشکل مواجه می شود و آنهم به این صورت که نتیجه به تعداد مختلف در لیست باکس تکرار می شود
    به عنوان مثال موارد ذیل را امتحان کنید
    فهیمه آستانی=نتیجه درست
    فهیمه اعصاب مردان=نتیجه درست
    فهیمه سرپرستار=نتیجه درست
    آستانی سرپرستار=نتیجه درست
    ولی..........
    فهیمه رسمی= نتیجه مکررا تکرار شده است
    خیلی فکر کردم خدا خیرتون بده بگید مشکل کدم در کجاست
    از اینکه وقت صرف می کنید تشکر می کنم
    اون تصویر اشتباهی اومده
    فایل های پیوست شده
    حانیه
  • iranweld

    • 2015/03/29
    • 3341

    #2
    با سلام

    تغییراتی در بهبود سرچ فرم شما ایجاد شده که شماره سطر آیتمهای مشابهه تکست باکس اول را در حافظه کپی مینماید و با کمی حوصله میتوانید از این سطرها با تغییر تکست باکس دوم به نتیجه مطلوب برسید
    فایل را بررسی بفرمایید
    فایل های پیوست شده
    Last edited by iranweld; 2016/02/04, 19:55.

    کامنت

    • حانیه

      • 2015/12/02
      • 19

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

      کامنت

      • Ali Parsaei
        مدير تالارتوابع اکسل

        • 2013/11/18
        • 1522
        • 71.67

        #4
        سلام،
        به نظرم يک کم لقمه را دور سرتان چرخاندين! فکر کنم راحت تر هم مي شد براي تکست باکس دو کدنويسي کرد.
        به هر حال چون گفته بوديد اشکال کد خودتان را پيدا کنم، من هم روي همان کد متمرکز شدم ببينم اشکالش کجا است،
        فکر کنم دو تا حلقه FOR که نوشته ايد در راستاي هم کار نمي کند، و هر کدام دارد مستقل کار مي کند!
        بايد وقتي B درحلقه اول پيدا شد، حلقه دوم مقدار C را فقط در سطر همان B که پيدا شده جستجو کند نه اينکه کل جدول را بگردد، به همين خاطر است که وقتي مقدار تکست باکس دوم در جدول داده ها تکراري باشد به همان مقدار تکرار سطر در ليست بکس ايجاد مي گردد.
        پس بايد کد حلقه متغيير C را به صورت زير تغيير دهيد:
        کد PHP:
         For Each c In Sheets("list").Range(Cells(b.Row1), Cells(b.Row9)) 
        ضمن اينکه کلا" اين نحوه کدنويسي شما درست نيست چون اگر مثلا" يک مورد در دو ستون در دو سطر متفاوت مشابه باشد، اطلاعات هر دو سطر را ليست مي کند!

        Last edited by Ali Parsaei; 2016/02/06, 23:41.
        [SIGPIC][/SIGPIC]

        کامنت

        • حانیه

          • 2015/12/02
          • 19

          #5
          ممنون از راهنماییتون
          حانیه

          کامنت

          • حانیه

            • 2015/12/02
            • 19

            #6
            واقعا از راهنماییتون متشکرم، مشکل کار همینجا بود، کد پیشنهادی رو اعمال کردم و نتیجه داد ، انشالله به مشکل دیگه ای برخورد نکنم، با این فرمایش شما کدهایی که نوشته بودم خیلی کوتاه شد و بسیاری از آن ها حذف شد. فایل اصلاح شده را گذاشتم و کدهایی که حذف شده مشخص است.
            نمیدونم به چه زبونی تشکر کنم خدا خیرتون بده
            این مشکل یک هفته بود ذهنمو درگیر کرده بود



            آیا دیگران هم پیشنهادات دیگری دارند؟
            فایل های پیوست شده
            حانیه

            کامنت

            • shamsololama

              • 2010/02/15
              • 940

              #7
              نوشته اصلی توسط حانیه
              سلام خدمت اساتید ارجمند خودم در این سایت
              از راهنمایی ها و آموزش های شما تشکر دارم اجرکم عندالله
              در فرم پیوست اولا که چون فایل ماکرو انیبل آپلود نشد فرمتش رو عوش کردم لطفا با فرمت ماکرو انیبل save as شود
              من وقتی در تکست باکس یک جستجو را انجام می دهم مشکلی نیست ولی وقتی یک جستجو را با دو آیتم میخواهم انجام دهم و از تکست باکس دوم استفاده می کنم در بعضی از موارد نتیجه جستجو با مشکل مواجه می شود و آنهم به این صورت که نتیجه به تعداد مختلف در لیست باکس تکرار می شود
              به عنوان مثال موارد ذیل را امتحان کنید
              فهیمه آستانی=نتیجه درست
              فهیمه اعصاب مردان=نتیجه درست
              فهیمه سرپرستار=نتیجه درست
              آستانی سرپرستار=نتیجه درست
              ولی..........
              فهیمه رسمی= نتیجه مکررا تکرار شده است
              خیلی فکر کردم خدا خیرتون بده بگید مشکل کدم در کجاست
              از اینکه وقت صرف می کنید تشکر می کنم
              اون تصویر اشتباهی اومده

              با درودفراوان

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

              فرم جستجوی پیشرفته با اشکال مواجه شده

              با درود فراوان

              فایل رو دیدم و کدهای که نوشتی خوب بود امیدوارم همیه ش موفق باشی

              در مورد کدی که نوشتی در تکست باکس یک به این صورت هست

              کد PHP:

              Private Sub TextBox1_Change()On Error Resume NextListBox1.ClearDim b As Range        For Each b In Sheets("list").Range("a3:i5000")            If b.Value <> "" And TextBox1.Text Then
                                  ListBox1
              .AddItem b.Value                For 0 To 11                    ListBox1.List(ListBox1.ListCount 12) = b.Offset(0, (-b.Column) + i).Text                Next i            End If        Next b
              End Sub 
              که به نظر کار را انجام میدهد ولی در صورتی که برای ما مهم نباشد که ورود تکست باکس یک در چه ستونی پیدا کند

              یعنی وقتی می نویسی 4 اگر این عدد برای فهمیه در ستون چهار باشد یک بار این سطر را وارد لیست میکند و اگر بازم در همین سطر شروع کار ماه هم چهار بود دوباره این سطر رو تکراری برای شما وارد لیست باکس میکند
              و از نظری دیگه اینکه اگر چهار مد نظر شما فقط شروع کار باشد این جستجو در ستونهای دیگر هم اگر چهار را پیدا کند وارد لیست میکند
              حالا نمیدانم شما به همین صورت مد نظرتون هست یا نه و این دلیلش اینه که محدود را در یک ستون نداده اید

              کد PHP:
                  For Each b In Sheets("list").Range("a3:i5000"
              و محدود نوشته شده از ستون a تا i در حلقه نوشته شده .
              در غیر این صورت می بایست محدود را از a تا a بنویسید.
              به این صورت

              کد PHP:
                  For Each b In Sheets("list").Range("a3:a5000"
              و با استفاده از کمبو باکس ستون مورد نظر را مشخص کنید برای جستجو که کد بداند در کدام ستون جستجو کند

              در کد تکست باکس دو
              دو حلقه جدا نوشته اید که اشکال کار اینجاست که اگر شما به دنبال فهمیه آستانی جستجو می کنید تکست باکس یک فهمیه را پیدا می کند و تکست باکس دو آستانی را پیدا میکند بدون در نظر گرفتن تکست باکس یک در نتیجه شما علاوه بر فهمیه آستای تمام کسانی که نام آنها فهیمه
              هست و تمام کسانی که فامیلی آنها آستانی هست را برای شما پیدا میکند .
              اگر همین مد نظر شما بود که هیچ ولی در غیر اینصورت باید یک حلقه بنویسید و ایفی که در اون حلقه می دین با با and تکست باکس دو هم همونجا چک کنه یعنی

              کد PHP:
               If b.Value <> "" And TextBox1.Text  and b.Offset(0,1) = TextBox2.Text  Then 
              یا به این صورت دو تا ایف تو در تو ولی با یک حلقه
              کد PHP:

              If b.Value <> "" And TextBox1.Text    Then
              If b.Offset(0,1).Value <> ""   and b.Offset(0,1) = TextBox2.Text  Then 
              و اینکه اگر میخواهید جستجوی پیشرفته بنویسید که در ستونهای مختلف جستجو کند بهتر این است که با دو تا کمبو باکس برای هر تکست باکس موضوع جستجو را مشخص کنید مثلا یک کمبو بالای تکست باکس یک که وقتی میخواهید نام را پیدا کنید از کمبو باکس نام را انتخاب میکنید و از کمبو باکس بالای تکست باکس دو گزینه مدرک پرستاری را انتخاب میکنید در نتیجه این بر مبنای این دو ستون جستجو میکند
              و همیشه بخاطر داشته بشید حلقه بهتر است از یک ستون انتخاب کنید مثلا از رنج a1:a5000 و با آفست بقیه ستون ها را مد نظر بگیرید
              ---------------------------------------------------------------------------------------------------
              بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم [size=x-small](دکتر شریعتی)[/size]
              shamsololama@yahoo.com
              09177733411

              کامنت

              چند لحظه..