PDA

View Full Version : جستجو در صورت خالی بودن فیلد



انگوران
سه شنبه 17 بهمن 1385, 18:13 عصر
دوستان سلام ـ زمانی که بخواهیم در صورت خالی بودن فیلد عمل جستجو صحیح انجام پذیرد کد زیر را می نویسیم

IIf(IsNull([forms]![form3].[text0]);".";[forms]![form3].[text0])
این در صورتی است که مشخصات ( مثلاً نام ) را کامل وارد کنیم حال اگر بخواهیم با وارد کردن بخشی از نام جستجوی صحیح انجام شود چه کنیم ؟ کد زیر جواب نداد .


IIf(IsNull(like"*" & [forms]![form3].[text0] & "*");".";(like"*" & [forms]![form3].[text0] & "*"))

Payam Moradi
سه شنبه 17 بهمن 1385, 19:02 عصر
شما چرا Like رو بردی تو IIF ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟


Like iif(IsNull([forms]![form3].[text0]);"*";"*" & [forms]![form3].[text0] & "*")

با NZ کار راحتتره:

Like NZ("*" & [forms]![form3].[text0] & "*";"*")
در هر صورت خای بودن یا نبودن از کد بالا میتونی استفاده کنی.

موفق باشید:چشمک:

انگوران
چهارشنبه 18 بهمن 1385, 11:42 صبح
ضمن تشکر تابع nz جواب نداد . لطفاً ضمیمه رو ببینید .

Payam Moradi
چهارشنبه 18 بهمن 1385, 12:57 عصر
ضمن تشکر تابع nz جواب نداد . لطفاً ضمیمه رو ببینید .

آقای/خام انگوران چندتا اشکال ازتون میگیرم ناراحت نشید:

اول کد نویسی شما خیلی ایراد داره.
دوم تابع NZ هم اشکالی نداره. شما درست استفاده نمیکنی. خوبه مثال گذاشتم.
این چیه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ "." این کاراکتر چی کار میکنه؟؟؟؟؟؟؟؟؟؟؟؟؟ به جای این باید از "*" استفاد کنید

سوم مگه ما روی فرم 3 تکستی به نام Text3 داریم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟
شما از Text3 تو کوئری استفاده کردی که وجود خارجی نداره. دقت کنید.
در ضمن در کوئری ها به این شکل Text رو صدا دریافت کن:


[Forms]![Form3]![text0]
شما به جای ! از . استفاده کردید.

ایراد خیلی بزرگ: تجربه من نشون میده که در نام فرم ها، جدولها و خلاصه آبجکتهای اکسس از نام فارسی و فاصله، فاصله مجازی و غیره و کارکترهای نامتدوال استفاده نکنید. از کاراکتر انگلیسی و اگر دوست داشتید از اعداد اونم در بین نام و آخر نام استفاده کنید. بعدا به مشکلی برخورد میکنید که مجبور میشید پروژتون رو از صفر شروع کنید. (خود دانی) مثلا نام رو بگذار: frmTelList.

همینطور برای Textها و کامبوها و غیره. سعی کن نام Text برابر نام فیلدی که نشون میده نباشه. مثلا برای نام یک txt اولش اضافه کن.

واشکالات دیگه که وقت توضیح نیست. بهر حال رفع شد.

موفق باشید:چشمک:

انگوران
چهارشنبه 18 بهمن 1385, 14:18 عصر
دوست عزیزم ضمن تشکر مطمئن باشید خوشحال میشم نه ناراحت اصلاً علت فعالیت من تو این سایت اینه که اشکالاتم رو بهم بگن .
و اما
اول : من کد نویسی خوب بلد نیستم فقط از برو بچه های همین سایت یه چیزائی یاد گرفتم و یه مقدار هم ... .
دوم : زمانی که به جای نقطه ستاره می ذارم کل رکوردها رو پیدا می کنه من می خوام زمانی که فرم لود می شه تو زیر فرم هیچ رکوردی نباشه و پس از وارد کردن مشخصات ( قسمتی از نام یا نام خانوادگی ) جستجو انجام بشه ( به همین خاطر این تاپیک ایجاد شد ) تو فرمی هم که ضمیمه کردین این مورد رعایت نشده در ضمن شرطها باید or باشن .
سوم : من جائی text3 نمی بینم .
و اما ایراد خیلی بزرگ: در برنامه هائی که جدیداً می نویسم سعی می کنم این موارد رعایت بشه و برنامه هائی که به این شکل ضمیمه می شن مال زمانی هستن که تازه اکسس رو یاد می گرفتم و الان نیز زیاد باهاشون سر و کار ندارم که اصلاحش کنم .
در هر صورت از لطف شما ممنونم .

Payam Moradi
چهارشنبه 18 بهمن 1385, 16:03 عصر
دوست عزیزم ضمن تشکر مطمئن باشید خوشحال میشم نه ناراحت اصلاً علت فعالیت من تو این سایت اینه که اشکالاتم رو بهم بگن .
من هم برای انتشار علم ناچیزی که دارم اینجا اومدم و در این بین چیزی هم یاد میگیرم. ضمنا شما و هیچ کس دیگه‌ای رو نمیشناسم، پس نسبت به کسی خصومتی ندارم. در مورد این:
http://www.barnamenevis.org/forum/showthread.php?p=306561#post306561


دوم : زمانی که به جای نقطه ستاره می ذارم کل رکوردها رو پیدا می کنه من می خوام زمانی که فرم لود می شه تو زیر فرم هیچ رکوردی نباشه و پس از وارد کردن مشخصات ( قسمتی از نام یا نام خانوادگی ) جستجو انجام بشه ( به همین خاطر این تاپیک ایجاد شد )
وقتی میخواید فرم لود بشه و خالی باشه باید توسط کد به ساب فرم سورس اختصاص بدید. ضمیمه رو ببینید.
تغییرات در کد ساب فرم رو ببینید.
تغییرات در Control Source ساب فرم رو ببینید.
تغییرات در کد فرم 3 را ببینید.


در ضمن شرطها باید or باشن .
ببینید عملگر OR برای این بکار میره:
نام = پیام یا نام‌خانوادگی = مرادی
اینطوری هر کی نامش پیام باشه (بدون توجه به فامیل) و اگه نام‌خانوادگیش مرادی باشه میاره(بدون توجه به نام). خب این جستجو ظاهرا منطقی نیست.
ولی عملگر AND اینطوریه:
نام = پیام و نام‌خانوادگی مرادی
یعنی هر کسی که نام پیام و حتما فامیلش مرادی هست میاره.
اصل جستجو اینطوریه.
بازم خودتون صلاح میدونین.


سوم : من جائی text3 نمی بینم .
در سورس کوئری فایل اولی که خودتون گذاشتید نگاه کنید. من فایل رو اصلاح کردم فرستاد.

در پایان اگر میخواید راحتر با اکسس کار کنید از ماکروها و Expressionها استفاده کنید.
اگر میخواید یک برنامه‌ای بنویسید که بتونید راحت اشکالات رو بگیرید و بفهمید کجا چه کار کردید از ماژول استفاده کنید. چون ماکروها و Expressionها در جلوی دید نیستند ولی کدها در جلوی دید هستند و توسط وی بی دیباگ میشن.

موفق باشید:چشمک:

انگوران
چهارشنبه 18 بهمن 1385, 16:47 عصر
بعضی مواقع جستجو اینجوریه : بر اساس شماره پرسنلی اگه نداشتم نام خانوادگی یا سازمان و ...
اصلاحاتی که انجام دادین جالب بود ولی چون من تو کد نویسی ضعیفم در حد ممکن از امکانات خود اکسس بدون کد نویسی استفاده می کنم .
البته من مشکلم رو به این شکل حل میکردم که پیش فرض تکست باکسهام رو یه نقطه قرار میدادم که نیاز به کد iif یا nz نداشته باشم که مطمئنم روش جالبی نبود ولی مشکلم رو حل میکرد و با پیشنهادی که شما لطف کردین و در ابتدای برنامه دادین ( استفاده از iif و na ) مشکلم رو با iif حل کردم فقط با nz مشکل دارم .

صبا9841
چهارشنبه 18 بهمن 1385, 16:48 عصر
ضمن تشکر تابع nz جواب نداد . لطفاً ضمیمه رو ببینید .

آقای انگوران شرح مطالب را مطالعه نکردم فقط نمونه ای گذاشتید اصلاحاتی دادم. اگر تکراری است یا مشکل برظرف شده هم بی خبرم. فقط در تایپ نام روی حرف "ی" با شیفت + ایکس استفاده شود. اگر راه حلش را بلدی به ما هم اطلاع بدهید.

Payam Moradi
چهارشنبه 18 بهمن 1385, 17:12 عصر
بعضی مواقع جستجو اینجوریه : بر اساس شماره پرسنلی اگه نداشتم نام خانوادگی یا سازمان و ...
اصلاحاتی که انجام دادین جالب بود ولی چون من تو کد نویسی ضعیفم در حد ممکن از امکانات خود اکسس بدون کد نویسی استفاده می کنم .
البته من مشکلم رو به این شکل حل میکردم که پیش فرض تکست باکسهام رو یه نقطه قرار میدادم که نیاز به کد iif یا nz نداشته باشم که مطمئنم روش جالبی نبود ولی مشکلم رو حل میکرد و با پیشنهادی که شما لطف کردین و در ابتدای برنامه دادین ( استفاده از iif و na ) مشکلم رو با iif حل کردم فقط با nz مشکل دارم .

من که دیگه کم آوردم.

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

راستش من اینطوری کار نکردم.

خب با NZ مشکل دارید با IIF کارو انجام دادم. ولی هنگام لود بازم لیست پر هست. (که طبیعیه، چون هنوز تکست ها خالیند)
غیر از این من دیگه نمیتونم.
دوستان شاید بتونن سوال شما رو جواب بدن.



فقط در تایپ نام روی حرف "ی" با شیفت + ایکس استفاده شود.

جناب صبا : ویندوز شما مورد داره. بقیه لازم نیست از شیفت و ایکس استفاده نمایند.

انگوران
چهارشنبه 18 بهمن 1385, 17:42 عصر
اینم فایلی که با دستور iif درست کار می کنه .

فقط در تایپ نام روی حرف "ی" با شیفت + ایکس استفاده شود. اگر راه حلش را بلدی به ما هم اطلاع بدهید.
یه فونتی رو باید نصب کنی که متاسفانه اسم فونت یادم نیست .

صبا9841
پنج شنبه 19 بهمن 1385, 12:13 عصر
اینم فایلی که با دستور iif درست کار می کنه .

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

شما باید روی OnCrrent فرم این کد را بنویسی من از این استفاده کردم:

Private Sub Form_Current()
With Me![SubformName].Form
.Visible = (.RecordsetClone.RecordCount > 0)
End With
End Sub

انگوران
شنبه 21 بهمن 1385, 11:27 صبح
در مراحل 7 این تاپیک آقای مرادی زحمت کشیدن و تغییراتی تو فرم دادن که اگه نتیجه جستجو تهی بود تو نوار عنوان فرم پیغام مربوطه نوشته بشه که من متاسفانه نتونستم باهاش کار کنم اگه یکی از دوستان زحمت بکشن و این امکان رو هم از طریق کنترل خطا و هم از طریق دستور if برامون بفرستن ممنون می شم .

صبا9841
شنبه 21 بهمن 1385, 17:01 عصر
در مراحل 7 این تاپیک آقای مرادی زحمت کشیدن و تغییراتی تو فرم دادن که اگه نتیجه جستجو تهی بود تو نوار عنوان فرم پیغام مربوطه نوشته بشه که من متاسفانه نتونستم باهاش کار کنم اگه یکی از دوستان زحمت بکشن و این امکان رو هم از طریق کنترل خطا و هم از طریق دستور if برامون بفرستن ممنون می شم .

آقای انگوران
شما 2 مطلب در این تایپیک مطرح کردید که دومیش مخفی کردن سابفرم هنگامیکه تکس باکس خالی است بود. به نظر می آید از کدی که پست بالا آمده نتوانستید نتیجه بگیرید. بدلیل اینکه نام جدول و کوئریتان فارسی است. اما همین کد روی جدولی از فایلتان (نام انگلیسی) جواب داد.

Payam Moradi
شنبه 21 بهمن 1385, 19:53 عصر
در مراحل 7 این تاپیک آقای مرادی زحمت کشیدن و تغییراتی تو فرم دادن که اگه نتیجه جستجو تهی بود تو نوار عنوان فرم پیغام مربوطه نوشته بشه که من متاسفانه نتونستم باهاش کار کنم اگه یکی از دوستان زحمت بکشن و این امکان رو هم از طریق کنترل خطا و هم از طریق دستور if برامون بفرستن ممنون می شم .

سلام

یعنی من نگم. شرمنده‌ام مثل اینکه خیلی خشک رفتار کردم:اشتباه: :ناراحت:

بهتر نیست یک کلید جهت شروع جستجو در فرم قرار بدید. منطقی تر هم هست.:چشمک: