با سلام
میخواهم با زدن دکمه روی فرم اول فرم دوم که شامل یک زیر فرم است باز شود با این شرط اینکه زیر فرم قابل ادیت نباشد
یعنی خاصیت Allow Edits زیر فرم false شود.
با تشکر و دعای خیر
با سلام
میخواهم با زدن دکمه روی فرم اول فرم دوم که شامل یک زیر فرم است باز شود با این شرط اینکه زیر فرم قابل ادیت نباشد
یعنی خاصیت Allow Edits زیر فرم false شود.
با تشکر و دعای خیر
آخرین ویرایش به وسیله m3343kh : پنج شنبه 22 مهر 1400 در 22:29 عصر
پیشاپیش از لطف شما بزرگواران سپاسگزارم
آخرین ویرایش به وسیله m3343kh : پنج شنبه 22 مهر 1400 در 22:30 عصر
3.png با سلام
این هم تصویر چیزی که میخواهم
خواهش میکنم اگر کسی میدونه، راهنمایی کند
برای شنبه لازم دارم
اگر همین دستور docmd.openform رو یک نگاه میکردین پاسخ خودتون رو گرفته بودین.
1- این دستور یک پارامتر داره به اسم data mode که چند حالت قبول میکنه: data entry (add) و read only و edit و property setting
کاملا مشخص هست که چه پارامتری رو باید برای هر حالت انتخاب کنین.
2- اگر شرایط پیچیده تر باشه بازای هر باتن یک openargs جداگانه به فرم میفرستین و رخداد open_form براساس مقدار اون عمل میکنین.
با تشکر از بذل توجه شما استاد گرامی
1- اتفاقا به پارامترهای add و edit و غیره هم رسیدم اما برای حالتی است که زیر فرم نداشته باشید.
یعنی رکوردهای یک فرم را تحت تاثیر قرار میدهد نه زیر فرم.
2- متوجه فرمایشتان نشدم.
یک توضیح مختصر میدم که اگر ابهامی هست برطرف بشه.
هر فرم 4 ویژگی داره برای کنترل چگونگی کار با دیتا:
allow additions
allow deletions
allow edits
data entry
وقتی شما فرم رو به روش معمولی باز میکنین، این 4 ویژگی که در طراحی (یا با کدهای خود فرم) تعیین شدن ، موثر هستن.
حالا اگر فرم رو با docmd.openform بازکنین، با پارامتر datamode میتونین (تا حدی) این 4 تا رو کنترل کنین.
اگر datamode رو روی propertysetting بگذارین معنیش این هست که این 4 ویژگی همونی که در طراجی فرم تنظیم شده بمونن (پیشفرض هم همین هست)
اگر datamode رو readonly بگذارین، تمام این 4 ویژگی فرم (و همچنین سابفرم های اون) رو false میکنه (بدون توجه به اینکه در طراحی چی تعریف شدن).
اگر datamode رو روی add بگذارین، فرم به حالت data entry میره (یعنی هر 4 ویژگی مورد نظر رو true میگذاره بدون توجه به مقادیر تنظیم شده در طراحی)
بنابراین اینکه فقط ثبت رکورد جدید داشته باشین (بدون ویرایش و ...) شاید با این بدست نیاد.
البته فکر کنم فقط در محدوده رکوردهای ثبت شده قابلیت ویرایش و ... داشته باشین و به رکوردهایی که قبلا ثبت شدن دسترسی ندارین - ولی این رو باید تست کنین چون مطمئن نیستم.
در مورد openargs و کاربرد اون اینجا مطلب و نمونه هست، اون ها رو مطالعه کنین تا بعدا پیاده سازی حواسته تون رو با استفاده از اون توضیح بدم.
سلام
4.png
حالت آخر acFormReadOnly برای دکمه فقط خواندنی خوبه
اما مسئله من با حالت ورود اطلاعات بدون دسترسی به ویرایش رکوردهای قبلی هست که هیچ کدام از این 4 گزینه Datamode برآورده نمیکند
یعنی کاربر بتواند رکوردهای قبلی را مشاهده کند و قادر اضافه کردن رکورد جدید باشد اما با خروج از آن رکورد نتواند ویرایش کند.
بالاخره جوینده یابنده است
با اضافه کردن یک خط کد به زیر کد openform بصورت زیر، درست شد
DoCmd.OpenForm "Data_frm", acNormal
Form_Data_frm.Data_sfrm.Form.AllowEdits = False
و اما مسئله اصلی این بود که فرم دوم (data_frm)در لیست فرمهای vba ظاهر نمی شد و نمی توانستم آدرس بدهم
برای این کار یک دکمه روی فرم data_frm یا فرم دوم درست کردم و در رویداد open آن از vba استفاده کردم و فرم دوم وارد لیست فرمهای vba شد. بعد دکمه را حذف کردم
من از این روش برای دسترسی کاربرانی که پس از لاگین بسته به نوع کاربریشان، اجازه ورود اطلاع جدید را دارند ولی دسترسی به رکوردهای قبلی فقط بصورت نمایش دارند میخواستم استفاده کنم.
شاید به درد دوستان دیگر بخورد.
ممنون از سایت بسیار خوبتان.
سلام
یه نگاهی به این لینک بندازید (روش پیشنهادی دومش اینه که از دو تا ساب فرم استفاده کنید رکوردهای موجود در ساب فرم دوم فقط خواندنی هستند و اونایی که در حال ایجاد هستند در ساب فرم اول تولید و به محض تکمیل داده به ساب فرم دوم منقل و از دسترس کاربر خارج میشه )
https://stackoverflow.com/questions/...n-a-form-loads
بله ممنون
قبلا از روش دو ساب فرم استفاده کرده بودم.
اما این روش حجم فایل رو کمتر میکنه (یک فرم و ساب فرم)
با سلام و احترام
منظور من از معرفی این لینک دادن ایده کلی بود. به شخصه خودم از فرم های باند نشده استفاده می کنم.به جای ساب فرم هم لیست باکس یا لسیت ویو رو به کار می گیرم.
پیشنهاد خودم اضافه کردن یک فیلد با عنوان کد کاربر ایجاد کننده به رکوردها هست که موقع ویرایش در صورت همخوانی کد کاربر ویرایش کننده با کد کاربر ایجاد کننده، اجازه ویرایش داده خواهد شد و در غیر اینصورت با دادن پیام از ویرایش جلوگیری خواهد شد.