PDA

View Full Version : check box و انتخاب



قله بلند
یک شنبه 25 فروردین 1387, 13:14 عصر
با سلام
خسته نباشید
طرح سوال:
فرض کنید روی فرمی دو combobox به نام های combo1 و combo2 وجود دارد و دکمه ای برای اجرای پرسو جو(runQuery)
میخواهم به کاربر برای نوع پرس و جو ، حق انتخاب بدهم به همین دلیل از checkBox استفاده کرده ام.
وقتی کاربر checkbox1 را تیک می زند ، combo1 فعال می شود و مثلا کاربر دکمه پرس و جو را فشار می دهد.
وقتی کاربر checkbox2 را تیک می زند، combo2 فعال می شود و مثلا کاربر دکمه پرس وجو را فشار می دهد.
و حالت سوم وقتی است که هر دو checkbox فعال باشد و پرس وجو بر اساس هر دو حالت انجام شود.
انجام دادن این کارها مشکل نیست ، فقط نمی توانم از قابلیت checkbox در حالت اجرایی استفاده کنم زیرا خطا صادر می شود.
اگر لطف کنید و راهنمایی ام کنید ممنون می شوم

مهدی قربانی
یک شنبه 25 فروردین 1387, 13:29 عصر
سلام
بهتره نمونه ای که روش کار کردید بذارید تا مشکل دقیقاً بررسی بشه .

قله بلند
یک شنبه 25 فروردین 1387, 13:58 عصر
سلام
فایل ضمیمه را ملاحظه کنید

F_ashigh
یک شنبه 25 فروردین 1387, 14:53 عصر
فکر کنم اگه کد را به این صورت بنویسی حل بشه.

If Me.Check5 = True Then

ElseIf Me.Check7= True Then

Else

End If

davood-ahmadi
یک شنبه 25 فروردین 1387, 14:55 عصر
روی نمونه خودت کار کردم ببین چجوریه.

قله بلند
یک شنبه 25 فروردین 1387, 20:52 عصر
روی نمونه خودت کار کردم ببین چجوریه.


سلام
ممنونم از اینکه توجه می کنید، کار قشنگی بود ولی اگر من بخواهم هر دو check box انتخاب شود چه کار باید بکنم ، زیرا در این حالت ، checkbox مانند radiobutton عمل می کند.
با تشکر فراوان

قله بلند
یک شنبه 25 فروردین 1387, 20:55 عصر
فکر کنم اگه کد را به این صورت بنویسی حل بشه.

If Me.Check5 = True Then

ElseIf Me.Check7= True Then

Else

End If


سلام و تشکر
باز هم همان ایرادها و خطاها، متاسفانه جواب نمی دهد ، چون این checkbox ها را چیزی خارج از محدوده واقعی می بیند

مهدی قربانی
یک شنبه 25 فروردین 1387, 22:43 عصر
سلام
ببینید چیزی که مورد نظر شماست اینه ؟

F_ashigh
دوشنبه 26 فروردین 1387, 07:23 صبح
"آقا مهدی با اجازه من یک کمی تغییر توی برنامه شما دادم"
دوست عزیز این برنامه را هم ببین

قله بلند
دوشنبه 26 فروردین 1387, 10:14 صبح
"آقا مهدی با اجازه من یک کمی تغییر توی برنامه شما دادم"
دوست عزیز این برنامه را هم ببین

سلام
از دوستان عزیزی که به سوال ها پاسخ میدهند ،واقعا سپاسگزارم
یک سوال دیگر برایم پیش آمده .
سوال:
میخواهم با دستورهای SQL پرس وجو را انجام دهم و وقتی (به طورمثال) combo0 فعال شد، ورودی در WHERE قرار گیرد و پرس وجو بر اساس آن انجام شود ولی هر دستوری کنار WHERE میگذارم جوابی حاصل نمی شود



WHERE radif1.table1=me.combo0
یا

WHERE radif1.table1= Forms![Form1].combo0

davood-ahmadi
دوشنبه 26 فروردین 1387, 11:09 صبح
WHERE radif1.table1=[forms]![FormName]![combo0

مهدی قربانی
دوشنبه 26 فروردین 1387, 14:00 عصر
سلام
این نمونه رو هم ببینید :

قله بلند
دوشنبه 26 فروردین 1387, 21:18 عصر
با سلام
مشکل های قبلی حل شدند ولی سوالی که الان برایم پیش آمده است به شرح زیر است
فایلی را ضمیمه این پست می کنم و خواهش می کنم بعد از ملاحظه آن به سوالات زیر پاسخ دهید. چون با راهنمایی که شما دوستان عزیز خواهید کرد ، امیدوارم راه حل مشکل فرا رو را بتوانم حل کنم.
1=اگر بخواهیم برای هر فیلد یک پرس و جو انجام دهیم ، تعداد زیاد می شود ولی مشکل اساسی تر دیگر پرس و جوی ترکیبی این فیلدهاست که کار را بسیار دشوار می سازد.
2=با مواردی که مطرح شده (checkbox ها)آیا راهی هست که با انتخاب هر checkboxای که کاربر از روی فرم انتخاب می کند، پرس و جو با عملیات کمتر نسبت به مورد مطرح شده در سوال اول انجام شود.
3=نظر شما چیست؟
ممنون از پاسخ های شما

مهدی قربانی
سه شنبه 27 فروردین 1387, 00:04 صبح
=اگر بخواهیم برای هر فیلد یک پرس و جو انجام دهیم ، تعداد زیاد می شود ولی مشکل اساسی تر دیگر پرس و جوی ترکیبی این فیلدهاست که کار را بسیار دشوار می سازد.

سلام
منظورتون دقیقاً چه جور پرس و جویی هست ؟ And یا Or


=با مواردی که مطرح شده (checkbox ها)آیا راهی هست که با انتخاب هر checkboxای که کاربر از روی فرم انتخاب می کند، پرس و جو با عملیات کمتر نسبت به مورد مطرح شده در سوال اول انجام شود.

منظور از پرس و جو با عملیات کمتر چیه ؟

قله بلند
سه شنبه 27 فروردین 1387, 07:43 صبح
سلام
منظورم پرس وجوهای ترکیبی and شده است.یعنی مثلا هم بر اساس ستون دوم وهم بر اساس ستون سوم پرس وجو شود و یا بر اساس سه ستون و حتی بیشتر...

منظورم از قسمت دوم این است که وقتی تمام فیلدهای جدول نمونه را روی فرم به صورت checkbox در بیاوریم و اجازه دهیم کاربر به دلخواه خود هر کدام را که مایل است انتخاب کند و بر اساس آن چیزی که کاربر انتخاب کرده است عمل پرس و جو انجام شود و دارای عملیات برنامه نویسی کمتری باشد و یا اینکه تعداد query ها و یا report های به دست آمده کمتر شود
باز هم از توجه تان سپاسگزارم

davood-ahmadi
سه شنبه 27 فروردین 1387, 09:35 صبح
شما باید از دستور IsNull استفاده کنید که مثلاً اگر کاربر اطلاعات در فیلد مربوطه وارد کرده بود اطلاعات طبق آن فیلد کووری و اگر ننوشته بود همه اطلاعات آورده شود. و بدین ترتیب برای کل فیلدها می توانید همچنین دستوری بنویسید.
مثال:

iif(not isnull([forms]![form1]![combo0]);[forms]![form1]![combo0])[fieldname];[forms]![form1]![combo0])

قله بلند
سه شنبه 27 فروردین 1387, 14:34 عصر
با سلام
لطفا با توجه به کد زیر ، بفرمایید اگر بخواهیم نتیجه query را به جای یک فرم در یک query قرار دهیم چه باید کرد ، چون در این صورت یک جدول مجزا داریم برای گزارش گیری:



Dim strsql As String




strsql = "SELECT Table1.radif1, Table1.name1 FROM Table1 WHERE (((Table1.radif1)=" & Me.Combo0 & "));"

DoCmd.OpenForm "table1"
Form_Table1.RecordSource = strsql

Debug.Print strsql

قله بلند
سه شنبه 27 فروردین 1387, 14:36 عصر
شما باید از دستور IsNull استفاده کنید که مثلاً اگر کاربر اطلاعات در فیلد مربوطه وارد کرده بود اطلاعات طبق آن فیلد کووری و اگر ننوشته بود همه اطلاعات آورده شود. و بدین ترتیب برای کل فیلدها می توانید همچنین دستوری بنویسید.
مثال:

iif(not isnull([forms]![form1]![combo0]);[forms]![form1]![combo0])[fieldname];[forms]![form1]![combo0])


با سلام
کدی که ذکرکردید حالت AND دارد؟

davood-ahmadi
سه شنبه 27 فروردین 1387, 15:52 عصر
یک مثال کوچولو آماده کردم . امیدوارم مفید باشه.

قله بلند
سه شنبه 27 فروردین 1387, 21:31 عصر
با سلام و تشکر فراوان
بسیار مثال جالبی بود ، اگر می شد که چند بار پیام تشکر فرستاد و تعداد تشکرهای مطلب جالب شمار ا افزایش داد این کار را می کردم.
من دقیقا از کد شما در برنامه ام استفاده کردم ولی همان نتیجه را نمی دهد. فایل را می فرستم ، لطف کنید بفرمایید مشکل کجاست. در این فایل فقط یک کامبو وجود دارد و اگر مشکلش حل شود برای تعداد کامبوهای دیگر قابل تعمیم است.
باز هم تشکر فراوان من را پذیرا باشید

davood-ahmadi
چهارشنبه 28 فروردین 1387, 17:22 عصر
برای اینکه شما در Query شرط نگذاشته بودید.

قله بلند
پنج شنبه 29 فروردین 1387, 17:43 عصر
با سلام و تشکر دوباره
من از راهنمایی شما نهایت استفاده را بردم و این مشکل حل شد. از این مورد برای انتخاب checkbox استفاده کردم و به مورد زیر برخوردم:
1=وقتی فرم برای اولین بار باز می شود و عمل پرس و جو انجام می شودف همه چیز به طور عادی انجام می شود وقتی تیک checkbox زده می شوذ سطرهایی انتخاب می شوند که دارای این خاصیت باشند. تا اینجا همه چیز درست کار می کند ولی وقتی checkbox را از حالت انتخاب خارج می کنیم ، سطرهایی که این خاصیت را ندارند انتخاب می شود ولی من می خواهم وقتی تیک checkbox را بر می دارم همه سطرهایی انتخاب شوند که فقط بر مبنای انتخاب کمبو است (انگار که تازه فرم را باز کرده ایم)
حال به نظر شما باید کد زیر تغییر کند؟



Iff(IsNull(Forms![Form1]!Check5),[selection_1],Forms![Form1]!Check5)[/FONT]


لطفا فایل نمونه را بینید

davood-ahmadi
پنج شنبه 29 فروردین 1387, 17:54 عصر
برنامه درست کار می کرد. چک کردمش.
باید این را در نظر داشته باشی که چک باکس دو حالت داره یا آره است یا نه.
فرمول شما درست کار می کنه.

قله بلند
جمعه 30 فروردین 1387, 14:03 عصر
با سلام
راهی را برای مشکلی که داشتم پیدا کردم، لطف کنید به فایل ضمیمه نگاهی بکنید و نظرتان را اعلام کنید ولی اگر می شد این کار را با checkbox یا radiobutton انجام داد کار شکیلتر می شد.
ممنون

davood-ahmadi
جمعه 30 فروردین 1387, 17:47 عصر
با Radio Button می خواستی ، نمونه.

قله بلند
شنبه 31 فروردین 1387, 14:29 عصر
با سلام وتشکر فراوان از توجه شما
من از Radiobutton ها طبق آنچه شما در فایل ضمیمه قرار داده بودید استفاده کردم و همان نتایج را به دست آوردم ولی به عنوان آخرین سوال دراین مبحث وبرای تکمیل بحث ، سوال زیر را مطرح میکنم:
چگونه میشود Focus را در هنگام باز کردن فرم ، روی گزینه "هردو" قرار داد ؟یعنی اینکه این گزینه در ابتدا انتخاب شده باشد. آیا برای چندین Frame روی فرم ، قرار دادن Focus رویگزینه "هردو" امکان پذیر است؟
با تشکر

davood-ahmadi
شنبه 31 فروردین 1387, 15:03 عصر
در پروپرتی Frame گزینه Default Value را به 3 تغییر دهید.

قله بلند
شنبه 31 فروردین 1387, 15:25 عصر
در پروپرتی Frame گزینه Default Value را به 3 تغییر دهید.

بله، تمام Frame ها به صورت پیش فرض ، به حالت "هردو" تغییر حالت داد.
این بحث از نظر من به صورت کامل ،تمام شد.من از این بحث ، فواید زیادی را بردم و امیدوارم هر کسی که این سلسله بحث ها را پیگیری میکند نیز نکات مثبت زیادی را دریافت کند.
از راهنمایی ها و توجه شما دوست عزیز نیز بسیار سپاسگزارم.
در پناه خداوند باشید

قله بلند
شنبه 07 اردیبهشت 1387, 09:12 صبح
شما باید از دستور IsNull استفاده کنید که مثلاً اگر کاربر اطلاعات در فیلد مربوطه وارد کرده بود اطلاعات طبق آن فیلد کووری و اگر ننوشته بود همه اطلاعات آورده شود. و بدین ترتیب برای کل فیلدها می توانید همچنین دستوری بنویسید.
مثال:

iif(not isnull([forms]![form1]![combo0]);[forms]![form1]![combo0])[fieldname];[forms]![form1]![combo0])

با عرض سلام
این سوال را در این قسمت مطرح می کنم ، چون کد بالا دراین قسمت مطرح شده است.
کد بالا برای AND کردن فیلدهاست ولی اگر خواستیم همه فیلدها هم با هم AND شوند و هم بتوان از خاصیت OR هم برای تمام فیلدها استفاده کرد باید از چه کدی استفاده کرد؟

وقتی برای هر فیلد از کد بالا در criteria هر فیلد استفاده میشود ، تولید AND بین همه فیلد ها می کند و وقتی از این خاصیت در سطر OR استفاده میشود ، همه فیلدها با هم OR می شوند ولی راهی نتوانستم پیدا کنم که بتوان از هر دو خاصیت AND و OR برای تمام فیلدها استفاده کرد.

حالا از نظر شما باید از چه دستوری و چگونه استفاده کنم؟
با سپاس

davood-ahmadi
شنبه 07 اردیبهشت 1387, 10:31 صبح
خوب شرط را درقسمت or بنویس درست عمل می کنه یعنی اونهایی را که نیاز And داری در کوروی در قسمت Criteria و آنهایی را که می خواهی Or باشند بنویس. حتما درست جواب می گیری. یک نکته اینکه همیشه ما یا شرطی نداریم و اگر داریم یکی از آنها حتما باید and باشد و بقیه می تونند or باشند.

قله بلند
شنبه 07 اردیبهشت 1387, 11:38 صبح
با سلام
دو نمونه ضمیمه میکنم ، اولی هر دو شرط در criteria قرار دارد و عمل and انجام می شود . درنمونه دومی یکی از شرط ها در or قرار گرفته است ولی من دیگر نمی توانم از خاصیت andبین این دو فیلد استفاده کنم.
لطفا بفرمایید کار من مشکل دارد یا باید شرط دیگری را اضافه کنم
ممنونم

davood-ahmadi
شنبه 07 اردیبهشت 1387, 17:35 عصر
باید ببینیم هدف شما چیست یا واضحتر بگم درخواستی که می خواهی بکنی ، از اون درخواست چه انتظاراتی داری.
در مورد مثالها نتایج درست بودند شرایط منطقی And و Or را جواب می دادند. نمی دانم شما چه می خواهید که بتونم راهنماییتون کنم.

قله بلند
شنبه 07 اردیبهشت 1387, 19:09 عصر
باید ببینیم هدف شما چیست یا واضحتر بگم درخواستی که می خواهی بکنی ، از اون درخواست چه انتظاراتی داری.
در مورد مثالها نتایج درست بودند شرایط منطقی And و Or را جواب می دادند. نمی دانم شما چه می خواهید که بتونم راهنماییتون کنم.

با سلام و تشکر از توجه شما
فرض کنید می خواهیم از اقلام درون case یک پرس و جو تهیه کنیم. درون یک Case اقلام زیر وجود دارد:
Ram ، Hard و....
حالا کاربر می خواهد پرس و جویی به دلخواه خود انجام دهد . یک بار می خواهد این گونه از پایگاه داده پرس و جو کند:
"تمام مشخصات کیس هایی را به من بده که یا Ram=32M دارند یا hard=40G "
بار دیگر می خواهد بگوید:
"تمام مشخصات کیس هایی را به من بده که هم Ram=32M دارند و هم hard=40G دارند"
یعنی به دو صورت دلخواه از دو فیلد پرس و جو می خواهد.
حالا سوال اینجاست:
آیا کاربر می تواند اینگونه به دلخواه پرس و جو کند؟

مهدی قربانی
شنبه 07 اردیبهشت 1387, 22:11 عصر
سلام
فکر می کنم چیزی که مورد نظر شماست عملاً فرمول نویسی توسط کاربره ، ببینید نمونه های موجود در این تاپیک ایده ای بهتون میده :
http://barnamenevis.org/forum/showthread.php?t=86173

قله بلند
یک شنبه 08 اردیبهشت 1387, 08:02 صبح
سلام
فکر می کنم چیزی که مورد نظر شماست عملاً فرمول نویسی توسط کاربره ، ببینید نمونه های موجود در این تاپیک ایده ای بهتون میده :
http://barnamenevis.org/forum/showthread.php?t=86173

سلام و تشکر از درج این لینک جالب
حتما روی این قضیه فکر می کنم و نتایج را در همین قسمت قرار می دهم

قله بلند
سه شنبه 10 اردیبهشت 1387, 08:44 صبح
سلام
فکر می کنم چیزی که مورد نظر شماست عملاً فرمول نویسی توسط کاربره ، ببینید نمونه های موجود در این تاپیک ایده ای بهتون میده :
http://barnamenevis.org/forum/showthread.php?t=86173

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

به طور مثال فرض کنید سه تا listbox داریم.
اولین listbox مربوط به دو combo است که محتوای این دو combo یکی برای RAM و دیگری برای HARD است.
دومین listbox مربوط به دو عملگر And و Or است که به کاربر انتخاب می دهد
سومین listbox دوباره مربوط به دو combo ای است که یکی حاوی اعداد RAM و دیگری حاوی اعداد HARD است.
حالا چگونه باید (به طور مثال) برنامه نویسی کرد که خط زیر را تفسیر کند:


iif(isnull(forms!form1!combo1),[RAM],forms!form1!combo1) And iif(forms!form1!combo2),[HARD],....)

قله بلند
پنج شنبه 12 اردیبهشت 1387, 12:03 عصر
با سلام
من روی این مورد فکر کردم ولی راستش گیج شدم که باید چه کار کنم.اگر لطف کنید یک راهنمایی بکنید شاید بتوانم راه را تشخیص دهم.

به طور مثال فرض کنید سه تا listbox داریم.
اولین listbox مربوط به دو combo است که محتوای این دو combo یکی برای RAM و دیگری برای HARD است.
دومین listbox مربوط به دو عملگر And و Or است که به کاربر انتخاب می دهد
سومین listbox دوباره مربوط به دو combo ای است که یکی حاوی اعداد RAM و دیگری حاوی اعداد HARD است.
حالا چگونه باید (به طور مثال) برنامه نویسی کرد که خط زیر را تفسیر کند:


iif(isnull(forms!form1!combo1),[RAM],forms!form1!combo1) And iif(forms!form1!combo2),[HARD],....)

با سلام
باز هم خواسته ام را تکرار می کنم و درخواست راهنمایی اگر کسی از دوستان راه حلی می داند