سلام
چون خودتون میدوند اکثر افرادی که با نرم افزارهای حسابداری کار می کنند زیاد اطلاعاتی درست و حسابی از کامپیوتر ندارند و انجام این تنظیمات براشون مشکل هستش
اگر مشکل از آن ReadOnly بوده هم در پروژه setup و هم در داخل برنتامه میتوان حلش کرد ولی اگر مشکل از امنیت بوده، به این راحتی قابل حل نیست.
شاید بهتر باشد از SqlServerExpress استفاده کنید و همراه setup نصبش کنید، در یک برنامه کوچک میتوانید به صورت دادن مسیر فایل هم (مثل mdb) به دیتابیس وصل شوید، ضمن اینکه امکانات بسیار بسیار بسیار بیشتر از mdb است و احتمالاً این مشکل امنیتی را هم ندارد.
در ضمن برای مستحکم کردن چه پیشنهادی دارید هر چند برنامه بدون مشکل کار میکند ولی اگر روش جالبتری دارید خوشحال میشم اونو بگید
- متغییر DataSource مشکلات اساسی دارد.
برنامه شما صددرصد در هر سیتم و ویندوزی اگر به داخل پوشه ای کپی شود که نامش شامل نقطه ویرگول باشد ; فوراً به خطا خواهد خورد.
نام پوشه را مثلاً A;B بگذارید و برنامه را در آن کپی و اجرا کنید!
ضمن اینکه در مبنای برنامه ای بزرگ این میتواند یک حفره امنیتی هم محصوب شود.
یا
در حال حاضر و با کد فعلی احتمال دارد در سیستم های مختلف یا بعد از آپدیتی در ویندوز یا در نگارش آینده ویندوز و... اگر برنامه شما به ریشه درایو کپی شود با خطا مواجه شود و اصلاً اجرا شود، گرچه الآن در ویستای من کار میکند و چیز مستحکمی نیست.
چرا؟
شما نوشته اید
"My.Application.Info.DirectoryPath + "\AhanDar.mdb
اگر برنامه از مسیر یک پوشه اجرا شود DirectoryPath بدون اسلش خواهد بود ولی برای ریشه درایو DirectoryPath جوابی با اسلش مثلاً به صورت \:C باز پس میدهد که با اجرای جمع شما میشود C:\\AhanDar.mdb یعنی دو اسلش پیاپی!
این معلوم نیست در سیستم ها و نسخه های آینده و اپدیتها دیگر ویندوز باعث چه رفتاری شود.
اینجا ها است که برنامه ها در شرایط خاص به مشکل برخورد میکنند و در یک سیستم کار میکنند و در دیگری نه، در یک پوشه جواب میدهند و در جای دیگر نه!!!
گرچه میتوان از DataDirectory هم استفاده کرد ولی حداقل کد زیر بهتر جواب دهد.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
- متغییر P_Idsanad بلا استفاده است و فقط و فقط یکجا مقدار دهی شده و بس و هیچکجا مصرف نشده.
- فراخانی dialog فرمها خیلی بهتر است با using همراه باشد تا تضمین آزاد سازی RAM و منابع سیستم عامل باشد.
مثلاً در متدهای MNu_People_Click و MNU_Pay_Click
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
- در جاهای دیگر هم اشیایی ساخته اید که باز تضمینی بر نابودیشان وجود ندارد،
گرچه جمع اوری کننده حافظه هرز دات نت قوی است و مایکروسافت اطمینان روی عملکرد داده ولی توصیه مایکروسافت در خصوص Dispose هم وجود دارد.
- خیلی از متد میتوان کدهای بهینه و با سرعت بیشتری نوشت
- در چندین متد از توابع و دستورات قدیمی VB که بیشتر برای هماهنگی با VB6 وجود دارند، استفاده شده، در حالی که استفاده از متدها و معادلهای جدید میتواند بهتر و کارامدتر باشد.
- چک کردن خالی بودن یک String را بهتر است با تابع String.IsNullOrEmpty چک شود تا هم وضعیت Null و هم وضعیت تهی چک شود و باز در شرایط خاص مشکل ساط نشود.
و...
موفق باشید.