انجمن تخصصی اکسس
جامع ترین انجمن تخصصی اکسس در خانه اکسس ایران
1
با سلام
چطور می شه در نمای Datasheet در یک سابفرم جای فیلد ها را کاربر با موس به سلیقه خود تغییر دهد و با زدن دگمه ای در فرم اصلی ذخیره و با دگمه دیگری فراخوانی کند
فایل ضمیمه برای نمونه ضمیمه گردیده است .
توجه: برای وارد شدن به قسمت طراحی قبل از باز کردن فایل ، کلید Shift را نگهدارید.
با تشکر
تشکر ها
azama و hamid-nice این پست را دوست دارند.
پاسخ پذیرفته شده
0
سلام
ضمن تشکر از جناب حمید بزرگوار و پژوهشگر
کار بسیار خوبی انجام شد . نکته ای که داشت این بود که ترتیب نمایش فیلدها بر خلاف انتظار در فرم ذخیره نمی شد و بلکه در جدول ذخیره می گردید .
با استفاده از کد خودتان و زحمتی که کشیدین موقع بستن فرم همین اطلاعات جاری یعنی ترتیب فیلدها و نمایش یا عدم نمایش آنها در جدول ordeing ذخیره گردید .
با سپاس
کاویان
ضمن تشکر از جناب حمید بزرگوار و پژوهشگر
کار بسیار خوبی انجام شد . نکته ای که داشت این بود که ترتیب نمایش فیلدها بر خلاف انتظار در فرم ذخیره نمی شد و بلکه در جدول ذخیره می گردید .
با استفاده از کد خودتان و زحمتی که کشیدین موقع بستن فرم همین اطلاعات جاری یعنی ترتیب فیلدها و نمایش یا عدم نمایش آنها در جدول ordeing ذخیره گردید .
با سپاس
کاویان
پاسخ ها (10)
-
پاسخ پذیرفته شده
0سلام
راه حل بدون دردسر اين سوال زدن دکمه CTRL+S هنگامي که کانون صفحه کليد در سابفرم هست مي باشد که با زدن اين دکمه ترتيب فيلدها ذخيره مي شه و براي دفعه بعد هم همون ترتيب رعايت مي شه .
اما ترتيب فيلدها در datasheet تا زماني که اونها رو به صورت دستي جابه جا نکرده ايم بر مبناي tab index تنظيم شده در هر فيلد هست که از کوچک به بزرگ فيلدها در کنار هم در نماي datasheet آورده مي شود .
اگر بخواهيم ترتيب پيش فرض اونها رو عوض کنيم که بايستي از همون خاصيت استفاده کنيم منتها بايستي براي مشاهده يه بار نماي فرم رو عوض کرد و دوباره به شرايط اول بازگردوندش که در فايل پيوست از همين روش استفاده شده است .
اما به محض اينکه اين فيلدها به صورت دستي جابه جا مي شوند ديگه ترتيب فيلدها از خاصيت tab index پيروي نکرده و احتمالا از خاصيتي به نام PrtDevMode که از خصوصيات فرم هستش پيروي مي کنه که کار با اين خاصيت يه کم پيچيده است .
اگر بتونيد با استفاده از توابعي که جناب بهرامي در سايت برنامه نويس گذاشتند امکان جا به جا کردن دستي فيلدها رو از کاربر بگيريد مي تونيد يه فرم فارسي براي تنظيم tab index طراحي کنيدکه کار فرم tab order رو که در نماي design امکان استفادش برامون فراهم هستش ، رو در نماي view انجام بده . و بعد هم نتيجه رو به عنوان يک property در فرم ذخيره کنيد و به محض باز شدن اون tab index رو فراخواني کنه و با استفاده از همين تکنيکي که در فايل پيوست استفاده شده اون رو ست کنه .
با سپاس
کاويان -
پاسخ پذیرفته شده
0با سلام
ممنون از پاسخگوییتان
مساله همین هست که اگر بتونیم ! اگر شما بتونید نمونه ای بر این اساس تهیه کنید ممنون می شیم
اگر شما لطف کنید یک نمونه طبق آنچه فرمودید تهیه کنید شاید هم راه حلی برای جلو گیری از تغییر جای فیلد ها با موس یا راهکار دیگری پیداشود
بنابراین قدم اول تهیه آن چیزی است که فرمودید .
با تشکر -
پاسخ پذیرفته شده
0با سلام
نمونه ضمیمه برای انتخاب فیلد ها توسط کاربر و همچنین ذخیره و فراخوانی مکان فیلدها به انتخاب کاربر فراهم گردیده که امید است مفید واقع گردد
در صورت داشتن ایده بهتر از سوی دوستان لطفا فایل را بهتر فرمایید
البته اگر بتوان محل ذخیره فیلدها را با موس تنظیم کرد هم خیلی خوب می شود.
با تشکر -
پاسخ پذیرفته شده
-
پاسخ پذیرفته شده
0با سلام
برای جامع تر شدن این تاپیک پیشنهاد می شود که در مورد ذخیره سازی اندازه فیلد ها توسط موس هم مورد بررسی قرار گیرد لذا پیشنهاد و راهکار جنابعالی در این خصوص چیست ؟
در ضمن پیشنهاد می شود که عنوان تاپیک را نیز به
مرتب سازی جای فیلد ها و اندازه فیلد ها و ذخیره و فراخوانی مجدد آنها
تغییر دهید تا موضوعیت تاپیک را هم در برگیرد
با تشکر -
پاسخ پذیرفته شده
-
پاسخ پذیرفته شده
-
پاسخ پذیرفته شده
1اشکالی در فایل قبل هنوز باقی بود و آنکه وقتی با موس یک فیلد را صفر می کردیم با باز شدن مجدد فرم دوباره نمایان می شد که در فایل ضمیمه نواقص برطرف شد
در ضمن ممنون می شویم اگر وقت داشتید sub ها را به صورت Function در یک ماژول مجزا برای عمومبت بخشیدن بیشتر ، تبدیل فرمایید.
موفق باشید -
پاسخ پذیرفته شده
0فایل کامل شده با تغییراتی ازجمله عدم وایسته شدن به جدول اصلی در زیر ضمیمه شد( یعنی صرفا کنترلهای روی فرم Datasheet با سه جدول که خصوصیات فیلدهای جدول اصلی در آنها ذخیره می شوند مقایسه می شوند بنابراین دستورات تغییر کرده اند )
نحوه کاربرد :
کافی است در رویداد OnOpen و Onclose فرم ، نام جداول ویژگی ها را تنظیم نمایید. و بقیه موارد مطابق آنچه در پست 50 # ذکر شده است .
در ضمن اگر دوستان زحمت بکشند و دستورات Sub ها را به صورت Function درآورند بسیار بهتر است زیرا از حجم کد نویسی ها برای استفاده در فرمهای مختلف به شدت کاسته خواهد شد . -
پاسخ پذیرفته شده
0در فایل پست قبل ، هنوز در دستورات onclose وابستگی به جدول اصلی وجود داشت در فایل زیر اصلاح صورت گرفته است که به صورت فایل mouse_Ordering-width-Datasheet3.rar در زیر ضمیمه گردیده است
فایل دوم ضمیمه شده :
Finall-mouse_Ordering-width-Datasheet2.rar : در این فایل علاوه بر منظور این تاپیک موارد لازم برای کامل شدن Datasheet ها که در تاپیک زیر به آن پرداخته شده نیز اعمال گردیده است
http://barnamenevis.org/showthread.php?427432-%D8%AD%D8%B0%D9%81-%D8%A7%D9%85%DA%A9%D8%A7%D9%86-%D9%81%DB%8C%D9%84%D8%AA%D8%B1-%D9%88-%D8%B3%D9%88%D8%B1%D8%AA-%DA%A9%D8%B1%D8%AF%D9%86-%D8%AF%D8%B1-%D9%86%D9%85%D8%A7%DB%8C-Datasheet
نکته مهم : در دستورات sub ها از on error resume next استفاده کرده ام
(درضمن اینکه برای( sub savewidth(tblwidth As String فراموش شده که دوستان خودشان اضافه کنند ) برای اینکه در نمای Datasheet فقط بعضی از انواع کنترلها از بعضی Properties ها مثل columnHidden برخوردارند و بسیاری از انواع کنترلها چنین Properties را ندارند بنابراین هنگام اجرا دچار ارور خواهیم شد
اما اگر نمی خواهید از on error resume next استفاده کنید می توانید دستورات را فقط برای آن کنترل ها بکار برید که برای این منظور می توانید مثلا برای نوع کنترلهای زیر ،از دستورات زیر استفاده نمایید :
If ctl.ControlType = acTextBox _
Or ctl.ControlType = acComboBox _
Or ctl.ControlType = acCheckBox _
Then
یعنی با اینکار دستورات را برای همه نوع کنترل استفاده نکرده اید و تنها برای کنترلهای بکار رفته در فرمتان که دارای Properties هایی که در دستورات استفاده شده بکار می برید لذا دیگر به علت عدم وجود Properties برای کنترلی در فرمتان ، پیغام error دریافت نخواهید کرد
در ضمن اگر دوستان زحمت بکشند و دستورات Sub ها را به صورت Function درآورند بسیار بهتر است زیرا از حجم کد نویسی ها برای استفاده در فرمهای مختلف به شدت کاسته خواهد شد .
موفق باشید.
برای ارسال پاسخ وارد شوید
برای ثبت پاسخ لازم است وارد شوید. از فرم مقابل برای ورود استفاده منید و اگر کاربر جدید هستید ثبت نام کنید.
اینجا ثبت نام کنید »