PDA

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



narpco
جمعه 30 آبان 1399, 17:16 عصر
سلام به دوستان
یک فایل داریم --یک جدول --یک کوئری برا اساس جدول--دو تا فرم--و یک ساب فرم
روی فرم 1frm_main_personel کلیک کنید
روی رکوردها حرکت کنید یک رکورد دلخواه انتخاب کنید
دکمه فیلتر کردن پرسنل را بزنید
فرم شماره دو باز میشود 2frm_qry_pesonel
فرد مورد نظر در وسط فرم شماره دو و در فرم frm_qry_pesonel_sub3 فیلتر شده و نمایش داده میشود
بعد از فیلتر شدن اطلاعات در فرم 2
میخواهیم در فرم شماره 2 : در تکست txt_per_info مشخصات فرد فیلتر شده بصورت :
علی -032155656-کارگر ----نمایش داده شود
اگر اطلاعاتی در ساب فرم نبود در تکست txt_per_info نوشته شود : اطلاعات یافت نشد


نکته مهم :
این عملیات باید در رویدار –after aupdate-onload یا هر رویدارد مناسب در فرم شماره 2 یا ساب فرم شماره 3 نوشته شود
با سپاس
فایل نمونه

https://s17.picofile.com/file/8414685218/subform.rar.html

eb_1345
جمعه 30 آبان 1399, 18:26 عصر
سلام به دوستان
یک فایل داریم --یک جدول --یک کوئری برا اساس جدول--دو تا فرم--و یک ساب فرم
روی فرم 1frm_main_personel کلیک کنید
روی رکوردها حرکت کنید یک رکورد دلخواه انتخاب کنید
دکمه فیلتر کردن پرسنل را بزنید
فرم شماره دو باز میشود 2frm_qry_pesonel
فرد مورد نظر در وسط فرم شماره دو و در فرم frm_qry_pesonel_sub3 فیلتر شده و نمایش داده میشود
بعد از فیلتر شدن اطلاعات در فرم 2
میخواهیم در فرم شماره 2 : در تکست txt_per_info مشخصات فرد فیلتر شده بصورت :
علی -032155656-کارگر ----نمایش داده شود
اگر اطلاعاتی در ساب فرم نبود در تکست txt_per_info نوشته شود : اطلاعات یافت نشد


نکته مهم :
این عملیات باید در رویدار –after aupdate-onload یا هر رویدارد مناسب در فرم شماره 2 یا ساب فرم شماره 3 نوشته شود
با سپاس
فایل نمونه

https://s17.picofile.com/file/8414685218/subform.rar.html


سلام
کد زیر رو در همان رویداد Command14_Click فرم یک در آخر کدها اضافه کن !


Forms![frm_qry_pesonel2].txt_per_info = Forms![frm_qry_pesonel2]![frm_qry_pesonel_sub3].Form.iname & "-" & Forms![frm_qry_pesonel2]![frm_qry_pesonel_sub3].Form.codemelli & "-" & Forms![frm_qry_pesonel2]![frm_qry_pesonel_sub3].Form.Form.job

narpco
جمعه 30 آبان 1399, 21:10 عصر
سلام عزیز بسیار ممنون
بیشتر نظرم این هست که بعد از ورود به فرم 2 .-------این عمل در فرم 2 یا 3 انجام بشه ..که اگر رکوردی داخل فرم 3 نبود داخل باکس بنویسه اطلاعاتی یافت نشد


در حالتی که الان هست کار انجام میشه حرفی نیست ---درست هم هست --منتها اگر در فرم 1 بروی یک رکورد خالی بروید و دکمه فیلتر رو بزنید با خطا رو برو میشید
درسته که میشه با یک If ساده مشکل رو حل کرد *** ولی بیشتر ذهنم در گیر اینه که چطور میشه از طریق فرم 2 و 3 این کار انجام بشه ....بسیار ممنونم

eb_1345
جمعه 30 آبان 1399, 21:52 عصر
سلام عزیز بسیار ممنون
بیشتر نظرم این هست که بعد از ورود به فرم 2 .-------این عمل در فرم 2 یا 3 انجام بشه ..که اگر رکوردی داخل فرم 3 نبود داخل باکس بنویسه اطلاعاتی یافت نشد


در حالتی که الان هست کار انجام میشه حرفی نیست ---درست هم هست --منتها اگر در فرم 1 بروی یک رکورد خالی بروید و دکمه فیلتر رو بزنید با خطا رو برو میشید
درسته که میشه با یک If ساده مشکل رو حل کرد *** ولی بیشتر ذهنم در گیر اینه که چطور میشه از طریق فرم 2 و 3 این کار انجام بشه ....بسیار ممنونم


کد زیر رو در رویداد Form_Current سابفرم frm_qry_pesonel_sub3 قرار بده !


If ID = Form_frm_main_personel1.ID Then
Me.Parent.txt_per_info = iname & "-" & codemelli & "-" & job
Else
Me.Parent.txt_per_info = "ãæÑÏí íÇÝÊ äÔÏ"
End If


در کدهای فوق نوشته مقابل Me.Parent.txt_per_info بعد از else موردی یافت نشد میباشد

narpco
شنبه 01 آذر 1399, 09:27 صبح
عزیز سلام صبح بخیر --و ممنون از شما زحمت کشیدید مشکل حل شد و من ممنونم ---
یک سئوال خارج از همه از این بحث ها داشتم ...
پس در نهایت ایا میشود بین فرم 2 و 3 یک همچین کدی نوشت یا خیر جواب نمیده ؟ مرسی

بعد از فیلتر شدن فرم 2 توسط فرم 1

در لود فرم 3 بنویسیم "

یک چیزی شبیه این .......Forms!mform!subform2!txt_test.Value = Me.txt_test3.Value

یا در لود فرم 2 بنویسیم "

Me.txt_test3.Value=Forms!mform!subform2!txt_test.V alue

eb_1345
شنبه 01 آذر 1399, 17:15 عصر
عزیز سلام صبح بخیر --و ممنون از شما زحمت کشیدید مشکل حل شد و من ممنونم ---
یک سئوال خارج از همه از این بحث ها داشتم ...
پس در نهایت ایا میشود بین فرم 2 و 3 یک همچین کدی نوشت یا خیر جواب نمیده ؟ مرسی

بعد از فیلتر شدن فرم 2 توسط فرم 1

در لود فرم 3 بنویسیم "

یک چیزی شبیه این .......Forms!mform!subform2!txt_test.Value = Me.txt_test3.Value

یا در لود فرم 2 بنویسیم "

Me.txt_test3.Value=Forms!mform!subform2!txt_test.V alue


سلام
در چنین مواردی برای اجرای درست یک کد باید به زمان و محل اجرای آن کد توجه فرمائید.
از زمان درخواست باز شدن یک فرم تا نمایش کامل اطلاعات اون چندتا رویداد به ترتیب زیر انجام میشود

Open → Load → Resize → Activate → Current

و از زمان درخواست بسته شدن یک فرم تا بسته شدن کامل اون چند رویداد به ترتیب زیر انجام میشود:

Unload → Deactivate → Close

و وقتی شما یک فرمی رو باز میکنید که داخل آن یک سابفرم است ابتدا رویدادهای باز شدن فرم به ترتیبی که عرض کردم صورت می گیرد بعد رویداد های سابفرم آن
بطور مثال در این نمونه شما ، ابتدا در فرم یک با کلیک بر روی کمند باتن فیلتر در خواست باز شدن فرم 2 رو می کنید و شما نمیتوانید تا پایان یافتن رویدادهای فرم 2 اجرای کدی را در سابفرم آن داشته باشید .
و این کد رو شما باید در آخرین رویداد فرم 3 که Form_Current میباشد درج نمائید و اگر در رویداد های قبل از آن اقدام به درج کد فوق بکنید نتیجه درستی نمی گیرید.
بدیهیست که بعد از اجرای رویدادهای یک فرم یا گزارش نوبت به اجرای رویداد های مربوط به کنترل های داخل آن فرم یا گزارش میرسد .
ضمناً شما میتوانید از رویداد Form_Timer هم برای اجرای کد در هرکدام از فرم ها اقدام بکنی و در همان رویداد بعد از در ج کد TimerInterval را برابر صفر قرار دهید که اجرای کد تکرار نشود.

narpco
شنبه 01 آذر 1399, 18:09 عصر
عزیز ممنون ---توضیح عالی وافی و کافی بود ....من دو روز هست دارم بیل میزنم تو این داستان ----هی میگم چرا جواب نمیده .....بسیار سپاس...:تشویق::تشویق::تشویق:

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

دوم اینکه ...بعنوان یک دوست کوچکتر --جداٌ پیشنهاد میکنم که در فکر یک سایت تخصصی آموزش اکسس و دوره های کوتاه یا بند صفر تا صدی باشید
تمام سایت های موجود و مشهور صرفامباحث مبتدی و دوره های ساده رو پوشش میدن که در نهایت در کار عملی واقعا بکار من یکی که نیومد
با اینکه هر چی دوره داشتن من خریدم .....
به هر حال انشالله در سلامتی کامل باشید .....و ما از دانش فنی شما بهره ببریم ....اگر واقعا تصمیم به وب سایت گرفتین روی همکاری من حساب کنید ...

narpco
شنبه 01 آذر 1399, 18:25 عصر
حالا در ادامه همین سلسله مراتب که فرمودین موضوع جالبی رو همین الان باهاش درگیر هستم
یک فرم داریم خلاصه لیست مربوط به فیش های حقوقی صادر شده

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

میخواهیم جمع هر فیلد در ساب فرم رو در فرم اصلی نشون بدیم مانند عکس

یک روشی رو گفتن که در ساب فرم تکست باکس بزارید بعد SUM هر فیلد رو بدست بیارید
بعد در فرم اصلی هم یک تکست باکس درست کنید و توش بنویسید مثلا --=[FRM_FISH_SUB]![tsum1] که خوب کار میکنه موردی نیست

منتها این کا رو میخوایم با کد بنویسیم که من نوشتم
مثلا :
Sumry_no_of_personel = Forms!FRM_Summary_mon_pay_list!FRM_FISH_SUB!tsum1

حالا در فرم اصلی یا ساب فرم تو هر رویدادی میزارم کار نمی کنه ...حتما در فرم اصلی باید داخل یک باتن بزارم که فرم کامل لود بشه بعد باتن رو بزنیم تا کار کنه
ممنون میشم بفرمایید اصول کار کلا همینه و راه حل دیگه ای نداره ؟ یا داره ممنون

https://s16.picofile.com/file/8414809018/33568.png

padide55
شنبه 01 آذر 1399, 19:56 عصر
سلام
هفته پیش یک تاپیک بود .با فرم و ساب فرم مشکل داشتیم.حل شد .
اینجا (https://barnamenevis.org/showthread.php?563183-%D8%A2%D9%BE%D8%AF%DB%8C%D8%AA-%D8%B4%D8%AF%D9%86-%D9%81%D8%B1%D9%85-%D9%88-%D8%B3%D8%A7%D8%A8-%D9%81%D8%B1%D9%85-%D8%A8%D8%AF%D9%88%D9%86-%D8%A8%D8%B3%D8%AA%D9%86-%D8%A2%D9%86&p=2436451&viewfull=1#post2436451).
.

narpco
شنبه 01 آذر 1399, 20:15 عصر
سلام ممنون از توضیحی که دادی فایل اون تاپیک رو نگاه کردم .......ممنون

اول اینکه مشکل فیلتر شدن و در کل موضوع این تاپیک حل شد

در پست شماره 8 مطلب جدیدی پرسیدم چون دیدم بی ربط به توضیحات داده شده نیست
و نیاز ندیدم تاپیک جدید بزنم

الان بحث تاپیک 8 در مورد اینه که جمع فیلد های تو ساب فرم بیاد تو فرم اصلی--با توضیحاتی که تو پست 8 دادم ...و لینک عکسی که در همون پست 8 هست .ممنون

padide55
شنبه 01 آذر 1399, 23:30 عصر
الان در اون تاپیک جمع ساب فرم میاد داخل فرم اصلی .
اون پایین نمایش میده .

narpco
شنبه 01 آذر 1399, 23:40 عصر
من این فایل SAMPLE5 رو بررسی کردم تو اون تاپیک خیلی سردرنیاوردم از نحوه کارش ولی فکر نکنم اصلا روش کار من با این فایل یکی باشه

ما یک دستور vba داریم

Sumry_no_of_personel = Forms!FRM_Summary_mon_pay_list!FRM_FISH_SUB!tsum1
که در فرم اصلی هست و داخل یک باتن وقتی اجراش می کنی درست کار می کنه

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

در ساب فرم ما تکست باکس گذاشتیم با نامtsum1 که داره sum فیلد مورد نظر ما رو انجام یده تو ساب فرم
و ما توسط دستور داخل باتن-در فرم اصلی- داریم میگیم مقدار جمع بدست امده را بزار تو Sumry_no_of_personel که در فرم اصلی هست ////
همین کار رو اتوماتیک انجام بده که نیاز به کلیک کردن روی باتن نباشه قضیه حله

eb_1345
یک شنبه 02 آذر 1399, 01:36 صبح
الان در اون تاپیک جمع ساب فرم میاد داخل فرم اصلی .
اون پایین نمایش میده .

سلام
آقای padide55 (https://barnamenevis.org/member.php?263869-padide55) درست میفرمایند . شما در قسمت ControlSource تکست باکسی که در فرم اصلی میخواهید جمع فیلد سابفرم در آن نمایش داده شود عبارت زیر رو قرار بده :



=[YourSubformName].[Form]![TextName]


بجای YourSubformName نام سابفرم و بجای TextName نام تکست باکس سابفرم
ضمناً استفاده از تابع NZ هم بخاطر اینست که اگر مقدار خالی در فیلدها وجود داشت آن را برابر صفر درنظر بگیره تا نتیجه جمع فیلدها درست بدست آید.


=Nz([YourSubformName].[Form]![TextName];0)

eb_1345
یک شنبه 02 آذر 1399, 01:45 صبح
عزیز ممنون ---توضیح عالی وافی و کافی بود ....من دو روز هست دارم بیل میزنم تو این داستان ----هی میگم چرا جواب نمیده .....بسیار سپاس...:تشویق::تشویق::تشویق:

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

دوم اینکه ...بعنوان یک دوست کوچکتر --جداٌ پیشنهاد میکنم که در فکر یک سایت تخصصی آموزش اکسس و دوره های کوتاه یا بند صفر تا صدی باشید
تمام سایت های موجود و مشهور صرفامباحث مبتدی و دوره های ساده رو پوشش میدن که در نهایت در کار عملی واقعا بکار من یکی که نیومد
با اینکه هر چی دوره داشتن من خریدم .....
به هر حال انشالله در سلامتی کامل باشید .....و ما از دانش فنی شما بهره ببریم ....اگر واقعا تصمیم به وب سایت گرفتین روی همکاری من حساب کنید ...


از محبت جنابعالی بسیار سپاسگزارم

padide55
یک شنبه 02 آذر 1399, 08:35 صبح
سلام
برای تاپیک قبلی دنبال روشهای مختلف جمع از ساب فرم به فرم بودم . نهایتا به این sample رسیدم . حتما کاربردیه .


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