نمایش نتایج 1 تا 12 از 12

نام تاپیک: فیلتر کردن بر اساس چند آیتم

  1. #1

    فیلتر کردن بر اساس چند آیتم

    سلام
    لطفا من را رهنمایی کنید من میخواهم دیتابیسم را بر اساس چند آیتم فیلتر کنم
    مثلا بر اساس تاریخ و نام خانوادگی
    از چه کدی باید استفاده کنم
    (بانک اطلاعاتیم با اکسس است)
    با تشکر از اساتید محترم
    کمی عجله دارم

  2. #2
    کاربر دائمی آواتار butterfly8528
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    CLR
    پست
    896

    نقل قول: فیلتر کردن بر اساس چند آیتم

    سلام دوست عزیز .

    کوئری زیر جدول YourTableName رو بر اساس تاریخ مشخص ( از تاریخ... تا تاریخ... ) و با نام... فیلتر می کند .

    RS.Open "SELECT * FROM YourTableName WHERE YourDateField>='" & txtDate1.Text & "' AND YourDateField<='" & txtDate2.Text & "' AND YourNameField='" & txtName.Text & "'"
    موفق باشید .

  3. #3

    نقل قول: فیلتر کردن بر اساس چند آیتم

    سلام
    در عبارت
    RS.Open "SELECT * FROM YourTableName WHERE YourDateField>='" & txtDate1.Text & "' AND YourDateField<='" & txtDate2.Text & "' AND YourNameField='" & txtName.Text & "'"
    چطور میتوان شرط را بگونه ای در نظر گرفت که وقتی تکست باکس خالی شد و بر روی گمه اجرا کننده دستور sql کلیک کردیم کلیه رکوردها به حالت اولیه برگردد و از فیلتر خارج شود
    OR YourDateField is null

    ممنون و متشکر

  4. #4
    کاربر دائمی آواتار butterfly8528
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    CLR
    پست
    896

    نقل قول: فیلتر کردن بر اساس چند آیتم

    سلام دوست عزیز .

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

     If Text1.Text = vbNullString Then
    RS.Open "SELECT * FROM YourTableName"
    Else
    '....
    End If
    موفق باشید .

  5. #5

    نقل قول: فیلتر کردن بر اساس چند آیتم

    سلام
    کافیه با یک شرط خالی بودن TextBox رو بررسی کنید و بعد تصمیم گیری کنید .
    من میخوام در بانکم یک جستجوی تودرتو انجام بدم
    باید همه دستورات در یک عبارت sql بگنجد
    فرض کنید من میخوام از تمام رکوردهام نام تمام افرادی که
    نامشان علی است
    قد آنها بالای 180 سانت است
    و معدلشان 20 است
    رو دربیارم
    یک جستجوی ترکیبی است
    معدلشان 20 است
    نامشان علی است
    قد آنها بالای 180 سانت است

    پارامترهای جستجو اصلاً مشخص نیست
    با سرچ اول 20 رکورد یافت میشود از 50 رکورد
    با جستجوی دوم 10 رکورد از 20 رکورد
    و با جستجوی سوم 3 رکورد از 10 رکورد باقی میماند
    شاید هم جای بعضی از پارامترها خالی باشد که نباید تاثیری در جستجو بگذارد
    فرض کنید طبق دستور شما در جستجوی دوم از سه جستجوی متوالی یک تکست باکس خالی باشد و :

     If Text1.Text = vbNullString Then
    RS.Open "SELECT * FROM YourTableName"
    Else
    '....
    End If

    دو مرتبه ما به تعداد رکوردهای اولیه برمیگردیم ، یعنی همان 50 رکورد ، که با این شرط ما دیگر یک جستجوی ترکیبی نداریم
    اگر امکانش هست شرط خالی بودن تکست باکس را در یک عبار sql بیاورید

  6. #6
    کاربر دائمی آواتار butterfly8528
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    CLR
    پست
    896

    نقل قول: فیلتر کردن بر اساس چند آیتم

    سلام
    نقل قول:
    کافیه با یک شرط خالی بودن TextBox رو بررسی کنید و بعد تصمیم گیری کنید .
    من میخوام در بانکم یک جستجوی تودرتو انجام بدم
    باید همه دستورات در یک عبارت sql بگنجد
    فرض کنید من میخوام از تمام رکوردهام نام تمام افرادی که
    نامشان علی است
    قد آنها بالای 180 سانت است
    و معدلشان 20 است
    رو دربیارم
    یک جستجوی ترکیبی است
    معدلشان 20 است
    نامشان علی است
    قد آنها بالای 180 سانت است

    پارامترهای جستجو اصلاً مشخص نیست
    با سرچ اول 20 رکورد یافت میشود از 50 رکورد
    با جستجوی دوم 10 رکورد از 20 رکورد
    و با جستجوی سوم 3 رکورد از 10 رکورد باقی میماند
    شاید هم جای بعضی از پارامترها خالی باشد که نباید تاثیری در جستجو بگذارد
    فرض کنید طبق دستور شما در جستجوی دوم از سه جستجوی متوالی یک تکست باکس خالی باشد و :

    کد:
    If Text1.Text = vbNullString Then
    RS.Open "SELECT * FROM YourTableName"
    Else
    '....
    End If
    دو مرتبه ما به تعداد رکوردهای اولیه برمیگردیم ، یعنی همان 50 رکورد ، که با این شرط ما دیگر یک جستجوی ترکیبی نداریم
    اگر امکانش هست شرط خالی بودن تکست باکس را در یک عبار sql بیاورید
    سلام .


    Dim strQuery As String
    Dim blnS As Boolean

    strQuery = "SELECT * FROM YourTableName"

    If txtName.Text <> vbNullString Then
    strQuery = strQuery & " WHERE YourNameField='" & txtName.Text & "'"
    blnS = True
    End If


    If txtHeight.Text <> "" Then
    If blnS Then
    strQuery = strQuery & " AND YourHeightField>" & Val(txtHeight.Text)
    Else
    strQuery = strQuery & " WHERE YourHeightField>" & Val(txtHeight.Text)
    blnS = True
    End If
    End If

    If txtAverage.Text <> "" Then
    If blnS Then
    strQuery = strQuery & " AND YourAverageField=" & Val(txtAverage.Text)
    Else
    strQuery = strQuery & " WHERE YourAverageField=" & Val(txtAverage.Text)
    blnS = True
    End If
    End If


    If blnS = True Then rs.Open strQuery, cn, adOpenStatic, adLockBatchOptimistic



    موفق باشید .

  7. #7

    نقل قول: فیلتر کردن بر اساس چند آیتم

    باسلام
    دوستان در نمونه زیر یک پروژه بانک اطلاعاتی ساده قرار دادم که میخوام درش با استفاده از فیلد های مختلف جستجوهای تودرتو یا پله ای انجام دهم
    بطوریکه نتیجه جستجوی یک آیتم منبعی برای جستجوی آیتم بعدی باشه و هرکدام از این فیلد ها مستقل از فیلد دیگر باشد
    در ضمن خواهشاً عملیات جستجو بگونه ای باشد که اگر جستجو بر اساس یک فیلد صورت گرفت و بعد آن تکسکت باکس رو خالی کردیم رکوردها به حالت اولیه خود برگردد
    مهمتر از همه اینکه تمام عملیات جستجوی فیلدها مستقل از هم هست و جستجوهای پله ای و ترکیبی است
    بعد از پایان جستجو هم بتونم نتایج باقی مونده در دیتا گرید رو در یک ریپورت نمایش بدم(گزارش)

    امکانش هست که تمام عملیات جستجو در یک عبارت sql نوشت
    (پس هر تکست باکس و کمبو باکس دوحالت دارد ، خالی و پر)



    دوستان برای اینکه منظورم رو واضح گفته باشم یک نمونه پروژه با اکسس درست کردم که دقیقاً منظورم درش نشون دادم

    فایل اکسس رو باز کنید و به کوئری Table1 Query در حالت sql view نگاه بندازید

    دقیقاً یک همچین چیزی در vb و در پروژه ضمیمه میخوام
    خیلی خیلی از لطفتون ممنون و متشکرم
    یاعلی
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله ali190 : پنج شنبه 29 مهر 1389 در 18:33 عصر

  8. #8
    کاربر دائمی آواتار kitcat_m18
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اداره - پشت میز کامپیوتر
    پست
    488

    Lightbulb نقل قول: فیلتر کردن بر اساس چند آیتم

    ali190 عزیز سلام،
    سورس کد شما رو دیدم و به مشکلاتی که داشتین تا حدودی واقف شدم.
    من اینجا همکاری دارم که مثل شما به Access مسلطه و با Access کدهاشو میزنه همیشه به شوخی بهش می گم دید انتظاعی (البته جسارت نشه خدمتتون)

    اول اینکه شما مشکل فونت عربی (حرف ی و پ) رو تو بانکتون دارین اول اونو اصلاح کنین (تو انجمن ها زیاد دربارش نوشتن) من برای اینکه بتونم کد رو بنویسم قسمت تحصیلات رو لاتین زدم.

    دوم اینکه در رابطه با خالی کردن تکست باکس و حساب نکردن اون تو سرچ SQL شما می تونید از عبارت Like استفاده کنین (تو کد براتون با توضیحات زدم) وقتی که از Like استفاده می کنین و تکست باکستون خالیه، میاد اون تکست باکس خالی رو به منزله همه چی (*) در نظر می گیره.

    منتها برای تاریخ تولد که باید میان دو تا تاریخ بگرده تنها راهی که به نظرم میرسه اینه که از Between استفاده کنین تو کد غیر فعالش کردم آخه اگه تاریخ رو دقیق بهش ندین نمی تونه نتیجه ای براتون بیاره و اگرم فیلد از تاریخ یا تا تاریخ رو خالی بذارین باز هم به همین صورت چیزی نشونتون نمیده (چون Like نیست نتیجه ای تو سرچ SQL پیدا نمی کنه)

    برای کمبو باکس تحصیلات هم دو حالت داره یا از Like استفاده کنی که اونوقت اگه دنبال دیپلمه ها بگردی فوق دیپلم ها هم نشون میده، یا باید برداری از (=) استفاده کنی که به مشکل خالی کردن تکست باکس و نشان ندادن نتیجه تو جستجو می خوری

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

  9. #9

    نقل قول: فیلتر کردن بر اساس چند آیتم

    سلام
    تشکر میکنم از دوست بسیار عزیزم جناب kitcat_m18 که آموزش خیلی خوبی به بنده در خصوص مقوله سرچ دادند
    واقعاً ممنون
    اما در فایل اصلاح بازهم مشکل دارم
    فرض کنید در بین 1000000 رکورد میخواهید افرادی را که نامشان فقط "علی" است را بیرون بکشید (مثلاً فرض کنید تولد حضرت علی است و میخواهند به افرادی که نامشان علی است و یک سری خصوصیات دیگر دارند (سایر پارامترهای جستجو که تقدم و تاخرشان مشخص نیست)جایزه بدهند)
    با این سرچ که دوستمون درست کردند چون از دستور Like استفاده میکنند رکوردهای مشابه رو هم بیرون میکشد مثل علیرضا ، امیر علی و... و هر رکوردی کلمه علی در اون هست

    اما در اکسس این کار براحتی میسر هست ، با دستور زیر:
    SELECT Table1.as, Table1.ass
    FROM Table1
    WHERE (((Table1.as)=[Forms]![form1]![Text0] Or [Forms]![form1]![Text0] Is Null));

    البته این دستور فقط برای یک فیلد است و برای تعداد فیلدهای بیشتر این دستور پیچیده تر میشود
    نکته مهم در عبات بالا استفاده از دستور Is Null هست
    [Forms]![form1]![Text0] هم همون تکستی هست که در فرم vb هست که در اکسس تکست باکس هر فرم رو اینطوری نشون میدن (هیچ فرقی با هم نمیکنه)
    در عبارت بالا هر رکورد از جدول که مساوی با text0بود انتخاب میشود و اگر هم text0 خالی باشد تاثیری در عملیات جستجو نمیگذارد
    با این کار دقیقاً کلمه هدف مورد استخراج قرار میگیرد
    من تعجم از این هست که اکثر دوستان متفق القول بر این قضضیه پا فشاری میکنند که vb6 در زمینه بانک اطلاعاتی دارای امکاناتی بمراتب بیشتر از خود اکسس هست ، این کار در اکسس به راحتی در عرض چند ثانیه (طبق این نمونه ) قابل انجامه ولی در vb هر کاری کردم نشد که نشد
    از اساتید خواهشمندم بنده رو در این زمینه راهنمایی بفرمائید
    ممنون ومتشکر از لطف همه عزیران
    یاعلی

  10. #10
    کاربر دائمی آواتار butterfly8528
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    CLR
    پست
    896

    نقل قول: فیلتر کردن بر اساس چند آیتم

    سلام .

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

    ali190 من منظور شما رو در همان ابتدا فهمیدم و راهنماییتون کردم، اگه به کد هایی که در پست 6 دادم خدمتتون توجه کرده بودید مشکلاتان حل شده بود !

    به هر حال با روشی که در پست 6 به آن اشاره کردم نمونه ای برای شما ضمیمه کردم ، با این روش می تونید N شرط رو در جستجو دخیل کنید .

    در ضمن بانکتون هم مشکل نا هماهنگی فونت با برنامه رو داره !

    موفق و پیروز باشید .
    فایل های ضمیمه فایل های ضمیمه

  11. #11
    کاربر دائمی آواتار kitcat_m18
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اداره - پشت میز کامپیوتر
    پست
    488

    Question نقل قول: فیلتر کردن بر اساس چند آیتم

    جناب butterfly8528 گرامی
    دیدگاه من با شما رو این مسئله کمی تفاوت داشته، من می خواستم با Where Close بیان کنم شما زودتر زحمتش رو کشیدین
    مهارت شما تو کد زدن خیلی بیشتر از منه با تشکر از راهنماییتون.

  12. #12
    کاربر دائمی آواتار butterfly8528
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    CLR
    پست
    896

    نقل قول: فیلتر کردن بر اساس چند آیتم

    سلام دوست عزیز .

    خواهش می کنم، این نظر لطف شماست .

    مهم اینه که تاپیک و دوستمون به نتیجه رسیدند .

    موفق باشید .

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •