PDA

View Full Version : مشکل با دیتابیس اکسس پس از نصب مجدد برنامه



اعظم
جمعه 30 مرداد 1388, 18:19 عصر
حول و حوش 5 سال پیش برنامه ای با دلفی 7 و اکسس نوشتم که بدون هیچ مشکلی کار می کنه

امسال به درخواست کارفرما تغییراتی در برنامه دادم و نسخه نصبی اون رو آماده کردم . مشکل از زمانی آغاز می شه که برنامه رو روی ویندوز 7 نصب می کنند .

پس از نصب برنامه بر روی ویندوز 7 اگر برنامه رو به هر دلیل uninstall کنید و دوباره نصب کنید برنامه دستابیس قبلی رو نمایش می ده در حالیکه اگر دیتابیس کنار برنامه رو با اکسس مستقیما باز کنید خالی نمایش داده می شود که با توجه به نصب مجدد برنامه قاعدتا باید خالی باشد. اما خود برنامه رکوردهای دیتابیس قبلی رو در دیبی گرید نمایش می دهد . !!!

اعظم
جمعه 30 مرداد 1388, 18:24 عصر
یک نکته دیگه این که اگر رکوردی هم اضافه کنید به دیتابیس قبلی اضافه میشه و نه به دیتابیس اکسس کنار فایل اجرایی برنامه . و جستجوی من برای پیدا کردن دیتابیسی که برنامه در حال حاضر با آن کار می کند به جوابی نرسید .

جواد ملاولی
جمعه 30 مرداد 1388, 22:31 عصر
سلام. مسیر دیتابیس رو در زمان اجرا به برنامه میدید؟

اعظم
جمعه 30 مرداد 1388, 23:43 عصر
بله . در واقع برنامه مسیر فایل اجرایی رو پیدا می کنه و بعد در شاخه data کنار فایل اجرایی فایل اکسس قرار داره

من نمیدونم واقعا الان دیتا کجا ذخیره میشه چون این دیتابیس رو با خود اکسس که باز می کنم خالیه حتی رو یک سیستم دیگه هم فایل رو بردم و باز کردم بازم خالی بود ولی برنامه رکوردها رو نشون میده !!

Ahmad Chehreghani
شنبه 31 مرداد 1388, 01:46 صبح
بهتره يک نمونه از Setup را بسازيد و با فايل کد Setup اينجا بزاريد تا هم خودتون و هم بقيه تستش بکنن.

vcldeveloper
شنبه 31 مرداد 1388, 02:19 صبح
من نمیدونم واقعا الان دیتا کجا ذخیره میشه چون این دیتابیس رو با خود اکسس که باز می کنم خالیه حتی رو یک سیستم دیگه هم فایل رو بردم و باز کردم بازم خالی بود ولی برنامه رکوردها رو نشون میده !!
وقتی شما یک سیستم عامل را به عنوان هدف در نظر می گیرید، باید با شرایط نوشتن برنامه برای آن سیستم عامل و تفاوت آن با سایر سیستم عامل ها آشنا باشید.

شما احتمالا از تغییرات ایجاد شده در ویندوز از ویندوز ویستا به بعد اطلاع ندارید، و بدون توجه به این تغییرات برنامه را برای ویستا یا ویندوز 7 نوشتید. هر نسخه ایی از ویندوز که می خواد منتشر بشه، مایکروسافت مستندات مختلفی درباره برنامه نویسی برای آن نسخه، و تغییراتی که برنامه نویسان باید در برنامه خود برای آن نسخه لحاظ کنند، منتشر میکنه. اگر این مستندات را مطالعه کرده باشید، می بینید که یکی از ویژگی های ویندوز ویستا و نسخه های بعد از آن، ایجاد محدودیت برای برنامه در نوشتن فایل در پوشه های ویژه مثل پوشه Program Files هست. از اول هم قرار نبوده که برنامه ها در پوشه Program Files فایل های تنظیمات یا داده خودشان را قرار دهند، و باید برای این منظور از پوشه AppData استفاده می کردند، ولی تا قبل از ویندوز ویستا، ویندوز در این مورد سختگیری نمی کرد، بسیاری از برنامه نویسان هم آسانترین راه را انتخاب می کردند.

برنامه شما در ویندوز 7 سعی میکنه داده ها را در فایلی در پوشه Program Files بنویسه، اما ویندوز این اجازه رو بهش نمیده. از اون جایی که برنامه نویسان زیادی از این روش اشتباه در برنامه خودشان استفاده کردند، ویندوز ویستا و ویندوز های بعد از آن، برای حفظ سازگاری با برنامه های قدیمی، پوشه ایی مجازی برای برنامه ایجاد می کنند، و فایلهای داده ایی را که برنامه می خواست در Program Files بنویسید، در آن پوشه مجازی می نویسند. این کار بدون متوجه شدن برنامه انجام می شود، یعنی برنامه همچنان تصور می کند که در حال نوشتن روی فایلی در Program Files است، در حالی که عملا بر روی فایلی در مسیر دیگری در حال نوشتن است.

بطور پیش فرض این پوشه مجازی در پوشه C:\Users\Username\AppData\Local\VirtualStore قرار داره. بجای Username باید نام کاربری که در ویندوز لاگین کرده را قرار بدید.

http://msdn.microsoft.com/en-us/windows/aa904987.aspx

اعظم
شنبه 31 مرداد 1388, 11:29 صبح
C:\Users\Username\AppData\Local\VirtualStore


از پاسختون سپاسگذارم .
آدرس فوق رو تست کردم و فایل های اکسس رو پیدا کردم