انجمن تخصصی اکسس

جامع ترین انجمن تخصصی اکسس در خانه اکسس ایران

hamid-nice
hamid-nice
آفلاین
1
با سلام چطور می شه در نمای Datasheet در یک سابفرم جای فیلد ها را کاربر با موس به سلیقه خود تغییر دهد و با زدن دگمه ای در فرم اصلی ذخیره و با دگمه دیگری فراخوانی کند فایل ضمیمه برای نمونه ضمیمه گردیده است . توجه: برای وارد شدن به قسمت طراحی قبل از باز کردن فایل ، کلید Shift را نگهدارید. با تشکر
پیوست ها:
تشکر ها

پاسخ پذیرفته شده

یکشنبه 11 - اسفند - 1392 21:18:09 - #لینک دائمی
0
سلام
ضمن تشکر از جناب حمید بزرگوار و پژوهشگر
کار بسیار خوبی انجام شد . نکته ای که داشت این بود که ترتیب نمایش فیلدها بر خلاف انتظار در فرم ذخیره نمی شد و بلکه در جدول ذخیره می گردید .
با استفاده از کد خودتان و زحمتی که کشیدین موقع بستن فرم همین اطلاعات جاری یعنی ترتیب فیلدها و نمایش یا عدم نمایش آنها در جدول ordeing ذخیره گردید .
با سپاس
کاویان
پیوست ها:
پاسخ به درستی کمینه شد نمایش
پاسخ ها (10)
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    دوشنبه 12 - اسفند - 1392 02:14:11 - #لینک دائمی
    0
    با سلام و تشکر از نکته سنجی شما جناب کاویان عزیز و ارجمند
    با تکنیک بسیار خوبتان و مهارت خوبی که در اکسس دارید مساله جابجایی فیلدها در Form2 بوسیله موس را به خوبی حل نمودید.
    با سپاس فراوان
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    یکشنبه 18 - اسفند - 1392 08:45:09 - #لینک دائمی
    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 درآورند بسیار بهتر است زیرا از حجم کد نویسی ها برای استفاده در فرمهای مختلف به شدت کاسته خواهد شد .


    موفق باشید.
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    چهارشنبه 16 - بهمن - 1392 14:06:22 - #لینک دائمی
    0
    سلام
    راه حل بدون دردسر اين سوال زدن دکمه CTRL+S هنگامي که کانون صفحه کليد در سابفرم هست مي باشد که با زدن اين دکمه ترتيب فيلدها ذخيره مي شه و براي دفعه بعد هم همون ترتيب رعايت مي شه .
    اما ترتيب فيلدها در datasheet تا زماني که اونها رو به صورت دستي جابه جا نکرده ايم بر مبناي tab index تنظيم شده در هر فيلد هست که از کوچک به بزرگ فيلدها در کنار هم در نماي datasheet آورده مي شود .
    اگر بخواهيم ترتيب پيش فرض اونها رو عوض کنيم که بايستي از همون خاصيت استفاده کنيم منتها بايستي براي مشاهده يه بار نماي فرم رو عوض کرد و دوباره به شرايط اول بازگردوندش که در فايل پيوست از همين روش استفاده شده است .
    اما به محض اينکه اين فيلدها به صورت دستي جابه جا مي شوند ديگه ترتيب فيلدها از خاصيت tab index پيروي نکرده و احتمالا از خاصيتي به نام PrtDevMode که از خصوصيات فرم هستش پيروي مي کنه که کار با اين خاصيت يه کم پيچيده است .
    اگر بتونيد با استفاده از توابعي که جناب بهرامي در سايت برنامه نويس گذاشتند امکان جا به جا کردن دستي فيلدها رو از کاربر بگيريد مي تونيد يه فرم فارسي براي تنظيم tab index طراحي کنيدکه کار فرم tab order رو که در نماي design امکان استفادش برامون فراهم هستش ، رو در نماي view انجام بده . و بعد هم نتيجه رو به عنوان يک property در فرم ذخيره کنيد و به محض باز شدن اون tab index رو فراخواني کنه و با استفاده از همين تکنيکي که در فايل پيوست استفاده شده اون رو ست کنه .
    با سپاس
    کاويان
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    چهارشنبه 16 - بهمن - 1392 19:12:53 - #لینک دائمی
    0
    با سلام
    ممنون از پاسخگوییتان
    مساله همین هست که اگر بتونیم ! اگر شما بتونید نمونه ای بر این اساس تهیه کنید ممنون می شیم
    اگر شما لطف کنید یک نمونه طبق آنچه فرمودید تهیه کنید شاید هم راه حلی برای جلو گیری از تغییر جای فیلد ها با موس یا راهکار دیگری پیداشود
    بنابراین قدم اول تهیه آن چیزی است که فرمودید .
    با تشکر
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    یکشنبه 11 - اسفند - 1392 16:44:21 - #لینک دائمی
    0
    با سلام
    نمونه ضمیمه برای انتخاب فیلد ها توسط کاربر و همچنین ذخیره و فراخوانی مکان فیلدها به انتخاب کاربر فراهم گردیده که امید است مفید واقع گردد
    در صورت داشتن ایده بهتر از سوی دوستان لطفا فایل را بهتر فرمایید
    البته اگر بتوان محل ذخیره فیلدها را با موس تنظیم کرد هم خیلی خوب می شود.
    با تشکر
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    چهارشنبه 14 - اسفند - 1392 08:33:07 - #لینک دائمی
    0
    با سلام
    برای جامع تر شدن این تاپیک پیشنهاد می شود که در مورد ذخیره سازی اندازه فیلد ها توسط موس هم مورد بررسی قرار گیرد لذا پیشنهاد و راهکار جنابعالی در این خصوص چیست ؟
    در ضمن پیشنهاد می شود که عنوان تاپیک را نیز به
    مرتب سازی جای فیلد ها و اندازه فیلد ها و ذخیره و فراخوانی مجدد آنها
    تغییر دهید تا موضوعیت تاپیک را هم در برگیرد
    با تشکر
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    پنج شنبه 15 - اسفند - 1392 16:55:04 - #لینک دائمی
    0
    با سلام
    مورد فوق هم به موارد قبل اضافه گردید
    لطفا بررسی فرمایید و در صورت ایده بهتر فایل را بهینه فرمایید
    موفق باشید
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    پنج شنبه 15 - اسفند - 1392 17:32:26 - #لینک دائمی
    0
    فایل پست قبل به صورت تابع در ضمیمه قرار گرفت
    (ضمنا جهت اطلاع ، اگر می تونستم فایل ضمیمه قبلی را حذف کنم پست جدید نمی زدم )
    موفق باشید
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    پنج شنبه 15 - اسفند - 1392 18:21:48 - #لینک دائمی
    1
    اشکالی در فایل قبل هنوز باقی بود و آنکه وقتی با موس یک فیلد را صفر می کردیم با باز شدن مجدد فرم دوباره نمایان می شد که در فایل ضمیمه نواقص برطرف شد
    در ضمن ممنون می شویم اگر وقت داشتید sub ها را به صورت Function در یک ماژول مجزا برای عمومبت بخشیدن بیشتر ، تبدیل فرمایید.
    موفق باشید
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
  • پاسخ پذیرفته شده

    hamid-nice
    hamid-nice
    آفلاین
    جمعه 16 - اسفند - 1392 20:04:00 - #لینک دائمی
    0
    فایل کامل شده با تغییراتی ازجمله عدم وایسته شدن به جدول اصلی در زیر ضمیمه شد( یعنی صرفا کنترلهای روی فرم Datasheet با سه جدول که خصوصیات فیلدهای جدول اصلی در آنها ذخیره می شوند مقایسه می شوند بنابراین دستورات تغییر کرده اند )
    نحوه کاربرد :
    کافی است در رویداد OnOpen و Onclose فرم ، نام جداول ویژگی ها را تنظیم نمایید. و بقیه موارد مطابق آنچه در پست 50 # ذکر شده است .

    در ضمن اگر دوستان زحمت بکشند و دستورات Sub ها را به صورت Function درآورند بسیار بهتر است زیرا از حجم کد نویسی ها برای استفاده در فرمهای مختلف به شدت کاسته خواهد شد .
    تشکر ها
    پاسخ به درستی کمینه شد نمایش
پاسخ شما

کدام را میپسندید؟

مایکروسافت اکسس 64 بیت - 66.7%
مایکروسافت اکسس 32 بیت - 16.7%
مایکروسافت اکسس 2007 - 16.7%

كل آرا: 6
اين نظرسنجي به پايان رسيده است on: 19 مارس 2017 - 00:00

عضویت در خبرنامه

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