PDA

View Full Version : سوال: چگونه در یک فرم فیلتر شده به رکورد بعدی یا قبلی برویم ؟



narpco
جمعه 09 آبان 1399, 22:05 عصر
سلام بر دوستان
همانطور که میدانیم راه های متفاوت و متعددی برای باز کردن فرم با مصلا کد عضویت خاصی وجود دارد از روش های اتوماتیک خود اکسس تا روشهای کد نویسی

در فایل نمونه موارد زیر موجود است.
جدول اعضا به تعداد 520 نفر+فرم متصل به جدول با نام frm_member
یک فرم پیام رسانی داریم بنام frmMsgInfo که در موقعی که کدی موجود نباشد هشدار میدهد

فرم مورد نظر سئوال ما frm_main میباشد
در این فرم یک تکست باکس وجود دارد و یک دکمه جستجو

در تکس باکس شماره عضویت مورد نظرمان را تایپ میکنیم و بعد کلید جستجو میزنیم و سند مربوطه باز میشود
بعد از اینکه جستجو انجام شد و سند مورد نظر باز شد ، مثلا کد عضویت 15 رو باز کرده ....
میخواهیم با دکمه های بعدی و قبلی ///// که روی frm_member موجود هست ////

به رکوردهای قبلی و بعدی برویم .....ولی ممکن نیست !!!!!!!!!!!!!! چون همین یک رکورد جستجو شده رو در دسترس داره و نشون میده ..دکمه بعدی رو بزنیم رکورد جدید ایجاد میکنه...دکمه قبلی رو بزنیم میگه شما در اولین رکورد موجو هستین ....!!!

ممنون میشم راهنمایی بفرمایید کجای کارم اشتباه است ؟
هدف ما این است که :
1-جستجوی سند مربوطه ....جستجو و نمایش داده شود
2-پس از انجام جستجو .....در فرم frm_member با کلید های بعد و قبلی به رکوردهای بعد یا قبلی برویم
با سپاس

لینک فایل نمونه ...

http://s17.picofile.com/file/8412352242/nextrecord_test_accdb.html

padide55
شنبه 10 آبان 1399, 08:33 صبح
کد مورد نظر برای فرم ایجاد فیلتر میکرد

در لود فرم مشخصات

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

کد ذخیره شده رو داخل فرم جستجو میکند و به رکورد مورد نظر می رود.
ورکورد مورد نظر جستجو شده را نمایش می دهد
و بقیه ماجرا طبق درخواست شما قابل انجام است

http://s16.picofile.com/file/8412378276/nextrecord_test_2_accdb.html

padide55
شنبه 10 آبان 1399, 11:48 صبح
ضمنا همین کار رو داخل خود فرم انجام بدین
یعنی کد جستجو که داخل لود گذاشتم رو داخل خود فرم یک فیلد تکست ایجاد کنید که با ورود شماره فرد . به همون رکورد بره . اینجوری یک فرم اولیه رو لازم ندارید .

البته با کوئری هم میشه کار کرد ولی برای کار شما همین روش بهتره . به شرط انکه کد تکراری نداشته باشید

narpco
شنبه 10 آبان 1399, 19:25 عصر
ضمنا همین کار رو داخل خود فرم انجام بدین
یعنی کد جستجو که داخل لود گذاشتم رو داخل خود فرم یک فیلد تکست ایجاد کنید که با ورود شماره فرد . به همون رکورد بره . اینجوری یک فرم اولیه رو لازم ندارید .

البته با کوئری هم میشه کار کرد ولی برای کار شما همین روش بهتره . به شرط انکه کد تکراری نداشته باشید
----------------------------------------------------------------------------------------------------------------------------------------------
سلام ممنون از زحمت شما ولی هدف ما هیچگدام از روش هایی که فرمودین نیست
1- لیست باکس تعبیه شده در فرم اصلی هیچ نقشی ندارد همینطوری جهت اطلاع گذاشته و نباید درگیر داستان جستجو گردد که بخواهیم اول درون لیست باکس کسی را پیدا کنیم بعد کدش بشینه تو تکست باکس بعد سرچ کنیم
این داستان مراحل کار رو داره زیاد می کنه که هدف ما این نیست

2- همینطور اینکه ما در فرم عضویت تکست باکس قرار بدیم و از داخل اون جستجو کنیم ..اینم مد نظر ما نیست

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

حتی المکان میخواهیم با کد نویسی این عمل انجام بشه نه کوئری



ممنون از شما:))

narpco
شنبه 10 آبان 1399, 19:42 عصر
و البته فکر کنم همین قطعه کد کافی باشه نظر شما چیه ؟
Dim MyData As Variant


MyData = icode


DoCmd.ShowAllRecords


Me.Form.icode.SetFocus
DoCmd.FindRecord MyData
Me.Form.icode.SetFocus

padide55
شنبه 10 آبان 1399, 20:32 عصر
و البته فکر کنم همین قطعه کد کافی باشه نظر شما چیه ؟
Dim MyData As Variant


MyData = icode


DoCmd.ShowAllRecords


Me.Form.icode.SetFocus
DoCmd.FindRecord MyData
Me.Form.icode.SetFocus
همین کد در لود فرم کافیه
بقیه موارد رو گذاشتم برای راههای دیگه

narpco
شنبه 10 آبان 1399, 20:45 عصر
من کد رو استفاده کردم و مشکل حل شد ..دم شما گرم

منتها ممنون میشم توضیح بدین دقیقا چه اتفاقی داره میوفته
دستورات به ظاهر ساده میان
و هر خطش مشخصه چیه ولی اینکه چطوری کد رو پیدا می کنه و نفهمیدم ....الان شبیه ادمی میمونم که میپرسه : استامینوفن از کجا میفهمه کجا مون درد میکنه ؟ میره درد رو ساکت می کنه :)))

ما درستور جستجو رو میزنیم
فرم مقصد باز میشه
با کد مورد نظر ما تا اینجاش رو چون خودم نوشتم میفهمم ....بعدش ؟ة؟ة؟

padide55
یک شنبه 11 آبان 1399, 06:25 صبح
قبل از اجرای فرم
میره اون عدد رو ذخیره موقت میکنه
Dim MyData As Variant
MyData = icode

بعدش فیلتر فرم که میرفت به همون عدد رو برمیداره و تمام دیتا رو نمایش میده .
DoCmd.ShowAllRecords

بعدش سرچ میکنه میره به همون عدد ذخیره شده .
Me.Form.icode.SetFocus
DoCmd.FindRecord MyData
Me.Form.icode.SetFocus