PDA

View Full Version : سوال: ایجاد متغییرهای استاتیک با تعداد زیاد یا پیشنهاد یک راه منطقی دیگه



رامین مرادی
شنبه 29 مهر 1396, 15:47 عصر
وقت بخیر دوستان
نیاز دارم حدود 300 تا مقدار BOOL رو به صورت سراسری در فرم های خاصی بهشون دسترسی داشته باشم.این متغییرها قراره از بانک خونده شده و مقدارشون در یک کلاس استاتیک نگه داری بشه و تا بتونم از همه جا بهش دسترسی داشته باشم.
به نظرتون منطقی ترین راه چیه برای نگه داری این همه متغییر؟(دیتا تیبل ، آرایه، لیست، متغییر استاتیک)!!!!!!
البته اینم بگم که تو هر فرمی به چندتا از این متغییر ها نیاز دارم. نهایتش دو یا سه تاشون . (میخواستم موقع اجرای فرم مستقیم مقادیر رو از دیتابیس بخونم. اما نمیخوام هی از دیتابیس کوئری بگیرم .اگه تو متغییر ذخیره بشن دیگه فقط موقع ورود مقداردهیشون میکنم)

محمد آشتیانی
شنبه 29 مهر 1396, 16:24 عصر
سلام
صورت مسئله چیه که همچین کاری میخواید انجام بدید؟
احتمالا برای کنترل و تعیین سطوح دسترسی کاربران نیست؟

رامین مرادی
یک شنبه 30 مهر 1396, 08:41 صبح
سلام
صورت مسئله چیه که همچین کاری میخواید انجام بدید؟
احتمالا برای کنترل و تعیین سطوح دسترسی کاربران نیست؟

سلام.بله همینطوره. برای سطح دسترسی.
مد نظرم این بود مث روش معمول نوع دسترسی(مدیر .کاربرو..) ایجاد کنم . اما نیازه هر کاربر نرم افزار تو بعضی از فرمها به دکمه یا منویی دسترسی نداشته باشه. البته تعداد کاربرهام کمن. نهایتا 30 تا.
تا یه مقداریشو خودم پیش رفتم. که فیلدهام همون منو ها و باتن ها بود. و هر رکورد برای یه کاربر.
(اگه روش بهتری هست ممنون میشم راهنماییم کنید.)

mz6488
یک شنبه 30 مهر 1396, 09:55 صبح
سلام.به نظر من دیتاتیبل بهترین گزینه س.فقط باید ترتیبی بدین که اگه سمت سرور دسترسی هاش تغییر کرد سمت کلاینت هم تغییر کنه.دیتاتیبل استاتیک سراسری موقع فبل کردن مجدد یه خورده بد قلقه.باید تمامی سطر هاش رو قبل از فیل کردن پاک کنید تا مجددا ردیف تکراری نزنه

رامین مرادی
یک شنبه 30 مهر 1396, 10:01 صبح
سلام.به نظر من دیتاتیبل بهترین گزینه س.فقط باید ترتیبی بدین که اگه سمت سرور دسترسی هاش تغییر کرد سمت کلاینت هم تغییر کنه.دیتاتیبل استاتیک سراسری موقع فبل کردن مجدد یه خورده بد قلقه.باید تمامی سطر هاش رو قبل از فیل کردن پاک کنید تا مجددا ردیف تکراری نزنه

بله ممنون. من خودم تو کارای محاسباتی سمت برنامه داده های دیتا بیس رو میریزم تو دیتاتیبل و محاسبه میکنم. به نظرمم واقعا سرعتشم عالیه. (اون چیزی که خودم احساس کردم)

برای بروزرسانی هم باید هر از گاهی دوباره دیتا تیبل پر بشه و آخرین وضعیت رو تو خودش ذخیره کنه.و قبلش هم باید کل سطرهاش خالی بشه تا اشکالی پیش نیاد.بازم ممنون بابت اظهار نظر و پیشنهادتون:تشویق:

ali_md110
یک شنبه 30 مهر 1396, 13:20 عصر
بجای اینکه 300 تا فیلد bool تعریف کنید
میتونید از Attribute ها استفاده کنید ینی Custom Attribute هایی بنویسید و شرط بندی تون رو توی این کلاسهای Attrib انجام بدید و بعد به کلاس ها و متدها و حتی رویدادهای دکمه هاو اعضای کلاس نسبت بدید و Permit برای کاربران صادر کنید مثل صفاتی که در System.ComponentModel.DataAnnotations موجود هست و در ef code first استفاده میشه
و دیگه نیاز نیست در ابتدای هر فرم متغیر صدا بزنید و چک بکنید کدوم کاربر حق استفاده از کدوم متد را داره
و سیستم شما هم سیستمی داینامیک میشه

رامین مرادی
یک شنبه 30 مهر 1396, 13:32 عصر
بجای اینکه 300 تا فیلد bool تعریف کنید
میتونید از Attribute ها استفاده کنید ینی Custom Attribute هایی بنویسید و شرط بندی تون رو توی این کلاسهای Attrib انجام بدید و بعد به کلاس ها و متدها و حتی رویدادهای دکمه هاو اعضای کلاس نسبت بدید و Permit برای کاربران صادر کنید مثل صفاتی که در System.ComponentModel.DataAnnotations موجود هست و در ef code first استفاده میشه
و دیگه نیاز نیست در ابتدای هر فرم متغیر صدا بزنید و چک بکنید کدوم کاربر حق استفاده از کدوم متد را داره
و سیستم شما هم سیستمی داینامیک میشه

ممنون دوست عزیز.
من با ado.net کد میزنم.
در صورت امکان یه مثال ساده بزارید تا بهتر منظورتون رو متوجه بشم. ممنون
یه چیز دیگه. توابعی که با اتریبیوت ها نوشته میشن باید void باشن درسته؟ خب توابع من که همشون اینجور نیست.

ali_md110
یک شنبه 30 مهر 1396, 13:49 عصر
این روشی که گفتم ربطی به نوع برنامه نویسی شما نداره که ADO باشه یا روش دیگهمنظور من از
System.ComponentModel.DataAnnotations موجود هست و در ef code first استفاده میشه جهت راهنمایی بودپست شماره 3 این تاپیک قبلا یک توضیح کوچیک دادم
http://barnamenevis.org/showthread.php?519090 (http://barnamenevis.org/showthread.php?519090-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%86%D8%AD%D9%88%D9%87-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B3%D8%B7%D8%AD-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C&p=2305744#post2305744)

من قبلا خودم از این روش تو برنامه های تحت ویندوزم استفاده کردم

رامین مرادی
یک شنبه 30 مهر 1396, 14:08 عصر
این روشی که گفتم ربطی به نوع برنامه نویسی شما نداره که ADO باشه یا روش دیگهمنظور من از
System.ComponentModel.DataAnnotations موجود هست و در ef code first استفاده میشه جهت راهنمایی بودپست شماره 3 این تاپیک قبلا یک توضیح کوچیک دادم
http://barnamenevis.org/showthread.php?519090 (http://barnamenevis.org/showthread.php?519090-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D8%AC%D8%B1%D8%A8%D9%87-%D9%86%D8%AD%D9%88%D9%87-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%B3%D8%B7%D8%AD-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C&p=2305744#post2305744)

من قبلا خودم از این روش تو برنامه های تحت ویندوزم استفاده کردم

اجازه بدید متوجه نشم. یه کمم گیجتر شدم. :لبخند:
یک نفر تو یک فرم اجازه ثبت داره. تو یک فرم اجازه حذف داره. تو فرم دیگه هم اجازه هیچ کاری نداره.که این اجازه داشتن یا نداشتن تو دیتابیس ذخیره شده
اینو با روشی که گفتید چجوری پیاده میکنید؟(نمونه قرار بدید خیلی بهتر میشه این مشکل خیلی از دوستان هست که هیچوقت هم به یه جواب مشخصی نرسیده)

ali_md110
یک شنبه 30 مهر 1396, 15:06 عصر
حتمن دوست من
در یک فرصت مناسب نمونه پروژه ارسال میکنم