PDA

View Full Version : سوال: نحوه بررسی 10 چک باکس در یک فرم



samkoper
جمعه 12 فروردین 1390, 10:19 صبح
با سلام ؛
دوستان عزیز من یه فرم دارم که در آن 10 چک باکس وجود داره که کاربر با انتخاب آنها محدوده جستجو رو مشخص می کنه ولی باید برای لحاظ کردن تمام احتمالات شرط زیادی رو در نظر بگیریم. آیا راه حل ساده تری برای این موضوع وجود داره یا نه؟
تصاویری از برنامه و نمونه کدی که نوشتم رو گذاشتم، منتظر راهنمایی شما دوستان هستم.

shedayat
جمعه 12 فروردین 1390, 11:13 صبح
سلام.

شما می تونین با انتخاب هر چک باکسی یه متغیر رو مقدار دهی کنید. مثلا با چک دار کردن "تاهل" و مثلا با انتخاب گزینه "متاهل" متغیر مثلا "Taahool" رو برابر "A" قرار بدی.
و در انتها فقط یه دستور "Select ...." بزاری.
مثال:
"Select * from personinfo where taahol='" & Taahool & "' "
و الی آخر.....
اگه این دستورات رو تو یه تابع قرار بدی و بعدش توی هر کدوم تابع رو فراخوانی کنی خیلی بهتره.
اگه منظورم رو متوجه نشدی بگو تا برات نمونه کد بزارم.
موفق باشی.

samkoper
جمعه 12 فروردین 1390, 11:35 صبح
سلام.

شما می تونین با انتخاب هر چک باکسی یه متغیر رو مقدار دهی کنید. مثلا با چک دار کردن "تاهل" و مثلا با انتخاب گزینه "متاهل" متغیر مثلا "Taahool" رو برابر "A" قرار بدی.
و در انتها فقط یه دستور "Select ...." بزاری.
مثال:
"Select * from personinfo where taahol='" & Taahool & "' "
و الی آخر.....
اگه این دستورات رو تو یه تابع قرار بدی و بعدش توی هر کدوم تابع رو فراخوانی کنی خیلی بهتره.
اگه منظورم رو متوجه نشدی بگو تا برات نمونه کد بزارم.
موفق باشی.

ممنون از پاسخ و راهنمایی شما دوست عزیز؛
اگه یه نمونه کد بزاری بسیار ممنون می شم.

shedayat
جمعه 12 فروردین 1390, 17:55 عصر
خواهش می کنم.
بفرما.
موفق باشی.

M_Maskout
شنبه 13 فروردین 1390, 10:21 صبح
سلام
یه راه ذخیره سازی برای انتخاب‌های دو حالته (باینری) و با تعداد گزینه زیاد (مثلاً 10 گزینه) استفاده از یک رشته‌ی کد شده مثلاً به صورت زیره:
یه رشته به طول تعداد گزینه‌ها در نظر گرفته می‌شه؛ مثلاً "0000000000"
به ازای هر انتخاب یکی از مکان‌های رشته با علامت مشخص پر می‌شه؛ مثلاً در صورتیکه گزینه‌های سوم، چهارم و پنجم و همینطور گزینه هشتم انتخاب شده باشن رشته حاصل "0011100100" هست.
به کد زیر توجه کنید:

Dim Code As String * 10

Private Sub Form_Load ()
Code = "0000000000"
End Sub

Private Sub Encode(CheckBox_Tag As Byte, ChechBox_Value As Boolean)
Mid(Code, CheckBox_Tag, 1) = Iif(CheckBox_Value, "1", "0")
End Sub

حالا در صورتیکه کد حاصل رو در فیلد Prop ذخیره کنیم، برای دسترسی به شخص یا اشخاصی که شرایط خاصی را دارن می‌شه از یه دستور SQL شبیه این استفاده کرد:

"SELECT * FROM table-name WHERE prop LIKE " + code

ضمناً می‌تونید به هر کدوم از چک باکس‌ها یه عدد منحصر به فرد (مثلاً توی Tag اونا) اختصاص بدین و توی روتین وقفه Click اونا دستور زیر رو بنویسین:

Encode CheckBox[0].Tag, ChechBox[0].Value

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