PDA

View Full Version : اجرا نشدن برنامه در شبکه



mohammadsaleh
پنج شنبه 30 فروردین 1397, 11:23 صبح
سلام دوستان
برنامه ای دارم که تحت شبکه حدود 200 کاربر از اون استفاده می کنند دیتابیس در ادرس مشخص و کاربران داده ها را ثبت و موقع لزوم جستجو هم می تونند انجام بدهند
هیچ یک از جداول هم به فرم ها باند نشده است
در فرم لود فرم اصلی تنظیمات و سطح دسترسی ها که در جدولی بنام تنظیمات است چک میشود و براساس آن کاربران به اعمالی دسترسی دارند
متاسفانه اخیرا برنامه بعضی از کاربران به علت عدم توانایی در چک کردن تنظیمات خطا تولید کرده و غیر قابل استفاده میشود
حتی خود من به عنوان ادمین نمیتوانم جدول تنظیمات را باز کنم
و پیامی می دهد که این جدول به صورت اکسکلوسیو توسط یکی از کاربران باز شده است در صورتیکه هیچ کس به این جدول دسترسی ندارد
البته این را عرض کنم چک کردن شرایط با دستور dlookup انجام می شود و این دستور در تایمر هم به علت چک کردن ها مستمر به شکلی دیگر از همین جدول صورت می گیرد
در هر صورت ممنون میشوم بدانم اشکال در چیست. به نظر خودم همه چیز درست اما چظور میشود با اینکه هیچ جدولی به فرمی که کاربران از آن استفاده می کنند باند نشده و قابل باز شدن نیست به علت استفاده توسط یک کاربر اجازه دریافت اطلاعات توسط سایر کاربران را آز ان نمی دهد

mazoolagh
شنبه 01 اردیبهشت 1397, 09:41 صبح
نگفتین که این بعضی کاربران مشخص و معین هستن یا رندوم؟
همچنین مشخص نکردین که آیا هر یوزر از نسخه front-end خودش استفاده میکنه یا اینکه مشترک هست (که نباید باشه)؟
همینطور تصویر پیام خطای واقعی هم مهمه - یا متن کامل و دقیق.

به هر حال اولین مظنون همیشه permission فولدر و فایل دیتابیس هست.

و بهترین راه حل هم استفاده از sql

mohammadsaleh
سه شنبه 04 اردیبهشت 1397, 07:32 صبح
سلام
باتشکر از پاسختون
دیتابیس در یک فولدر و هر یوزر ار نسخه خودش استفاده میکنه
همه دستورات افزودن - بروزرسانی و... دیتا با استفاده از دستورات sql است
تنها برای تشخیص سطح دسترسی کاربران در فرم لود اولیه از فانکشن dlookup استفاده کردم
همچنین در رویداد تایمر برنامه که هر 10 ثانیه اجرا میشه وضعیت کنکشن ارتباط با دیتابیس رو نوشتم (البته در این مورد هم فقط وجود فولدر را چک میکنه :ممنون میشم اگر راه بهتری وجود دارد بهم اطلاع بدید)
ضمنا در رویداد تایمر برای خارج کردن کاربران و بستن برنامه وضعیت تعریف کردم که در صورت لزوم کاربران با نمایش پیام و تایید ان از برنامه خارج شوند
با این حال پیامی که مشاهده میشه اینه که :جدول تنظیمات برنامه توسط کاربر... به صورت اکسکلوسیو باز شده و شما مجاز به استفاده از آن نمی باشد.
البته هیچه فرم وجود ندارد که کاربر بتواند آن جدول تنظیمات را ببیند. تنها بک فرم که به جدول تنظیمات شده و فیلدهای ان توسط خودم تغییر می کند به این فرم باند است
به نظر خودم امد شاید به خاطر استفاده از دستور dlookup است
یا شاید تغییر این جدول درحین استفاده کاربران این اشکال را ایجاد می کند
در هر صورت ممنون میشم راهنمایی کنید

mazoolagh
چهارشنبه 05 اردیبهشت 1397, 11:27 صبح
خیلی سخته که بدون اشراف به همه جوانب بشه عیب یابی کرد ولی:



یا شاید تغییر این جدول درحین استفاده کاربران این اشکال را ایجاد می کند

باید همین باشه
فقط یک کاربر در هر لحظه مجاز هست که یک رکورد رو تغییر بده (با فرض اینکه record level locking روی edited record باشه که درستش هم همین هست)

برای اینکه به خطا برنخورین یک تابع برای آپدیت جدول تنظیمات بنویسین و در اون حتما error handling مناسب هم برای بررسی موفقیت آمیز بودن عملیات پیاده کنین.

استفاده از تایمر صرفا برای بررسی کانکشن back-end بنظرم کار بیهوده ای هست. کافی هست توابع گلوبال برای select-insert-update-delete بنویسین و error-handling مناسب رو انجام بدین.

mohammadsaleh
چهارشنبه 05 اردیبهشت 1397, 16:54 عصر
سلام
تشکر از اظهار نظرات خوبتون
همه موارد رو رعایت کردم
جز موضوع لاکینگ و استفاده نکردن از تایمر
ضمنا فرم تنظیماتم با دستور sql اپدیت نمیشه بلکه شامل یک ردیف اطلاعات هست که متصل به فرم کردم
شاید هم بهتر باشه این فرم را هم با دستور upddte تغییر بدم