PDA

View Full Version : جستجو با تعداد شرط زياد



adib202
دوشنبه 05 تیر 1391, 19:16 عصر
سلام
دنبال اين سوالي كه مطرح ميكنم زياد گشتم ولي خبري نبود
يه كوئري ميخوام با شرطاي زياد تو هر فيلد كه امكان داره باشن يا نباشن.مي خوام بدونم امكان نوشت اين كوئري تو چند خط وجود داره؟
اگه نه كسي راه حلي داره؟
مثلا:



Adodc1.RecordSource = "select * from Table1 where "
If Check1.Value = 1 Then
feild1 = " & 1 & "
End If

If Check2.Value = 1 Then
feild2 = " & 2 & "
End If

If Check3.Value = 1 Then
feild3 = " & 3 & "
End If

If Text1.Text = 557 Then
feild4 > " & 12 & "
End If

Adodc1.Refresh



فكر كنيد از اين شرط ها حدود 50 مورد باشه.لطفا ارهنمايي كنيد

mohammadriano
دوشنبه 05 تیر 1391, 20:12 عصر
سلام
دنبال اين سوالي كه مطرح ميكنم زياد گشتم ولي خبري نبود
يه كوئري ميخوام با شرطاي زياد تو هر فيلد كه امكان داره باشن يا نباشن.مي خوام بدونم امكان نوشت اين كوئري تو چند خط وجود داره؟
اگه نه كسي راه حلي داره؟
مثلا:



Adodc1.RecordSource = "select * from Table1 where "
If Check1.Value = 1 Then
feild1 = " & 1 & "
End If

If Check2.Value = 1 Then
feild2 = " & 2 & "
End If

If Check3.Value = 1 Then
feild3 = " & 3 & "
End If

If Text1.Text = 557 Then
feild4 > " & 12 & "
End If

Adodc1.Refresh



فكر كنيد از اين شرط ها حدود 50 مورد باشه.لطفا ارهنمايي كنيد


خب به دستور where خودت and اظافه کن

adib202
سه شنبه 06 تیر 1391, 12:48 عصر
دوست عزيز ممنون از جوابتون
ميدونم كه ميشه از and استفاده كني ولي بنده عرض كردم ممكنه از اين شرط ها حدود 50 مورد باشه.حالا فكر كن تازه يه تركيب بخواي از اين 50 هم بگيري ميشه 50 به توان 50 كوئري...
لطفا اگه كسي ميتونه راهنمايي كنه

mohammadriano
سه شنبه 06 تیر 1391, 15:43 عصر
سوال شما واضح نیست
اگه واضح تر ببرسید من که هیچ ولی اساتید کارکشته ای در http://barnamenevis.org کمکتون کنند.
ببین دوست عزیز کاش کلاً بگید چه کاری می خواهید انجام بدهید.اصلاً شاید نیاز به کوئری نوشتن نباشه
ببین عزیز من:
بعضی مواقع که تعداد رکوردهای شما بعد از کوئری گرفتن به زیر 300 یا کم و بیش میرسه می تونین یه کار دیگه هم انجام بدین Search در خروجی کوئری
اگه در هنگام سوال پرسیدن عکس مورد سوال شما از برنامه رو هم Upload کنید میشه خیلی بهتر جواب گرفت
البته شاید این هم بتونه کمکتون کنه

Data1.RecordSource = "select * from bank where " + X + " like '" + Text.Text + " ' " + " order by id " + b
Data1.Refresh

adib202
شنبه 10 تیر 1391, 12:24 عصر
ببين دوست من مثلا فيلدهايي مثل size , date , price , count , و شايد 30 فيلد ديگه باشه.حالا هر كدوم از اين فيلدها توي فرممون يه كنترل chekbox و textbox دارن.كه با فعال كردن chekbox مقدار رو توي text box وارد ميشه.
حالا شرط اصلي اينجاس كه در صورت فعال بودن chekbox جستجو يا كوئري بر اساس فيلد مربوط گرفته ميشه.
حالا اگه 30 تا كنترل داشته باشي چطور ميشه يه شرط رو براي همه اينا اجرا كرد؟؟
نميدونم واضح بود يا نه!

adib202
یک شنبه 11 تیر 1391, 18:54 عصر
دوستان كسي نميتونه كمك كنه؟

xxxxx_xxxxx
یک شنبه 25 تیر 1391, 18:55 عصر
سلام،
شما یک دستور Select به ازای همه فیلدهاتون بنویسید. مثلاً اگر 30 فیلد دارید:

SQL = "select * from table1 where field1='1' and field2='2' and field3='3' and ... and field30='30' "

این دستور رو توی یک متغیر String به نام SQL قرار دادیم.
حالا فقط کافی هست به ازای هر یک از Checkbox هایی که Unchecked هستند یک بار دستور Replace رو برای اون فیلد مربوط به Checkbox اجرا کنید. در واقع قصد داریم با اعمال دستور Replace، اون قسمت از دستور SQL رو از توی متغیرمون حذف کنیم. مثلاً اگر Checkbox دوم که مربوط به فیلد دوم میشه، تیک نخوره، باید این دستور رو اجرا کنیم:

SQL = Replace(SQL, "and field2='2'", "")

با این کار، نیاز به n دستور Replace دارید که n تعداد فیلدهای شماست. اما میتونید هر ترکیب دلخواهی از n رو داشته باشید.

موفق باشید/