PDA

View Full Version : کمک فوری در خصوص ایجاد فایل Setup برای پروژه vb.net اما با ADODB و Access 2007



kapkap
سه شنبه 30 فروردین 1390, 01:00 صبح
سلام به همه دوستان
من در محیط VS 2010 و تحت dotnetframework 4.0 ،یک پروژه VB.Net ایجاد کرده ام و در اون از بانک Access 2007 و ADO 2.7 استفاده کرده ام. پروژه کاملا و بصورت صحیح روی دستگاه خودم کار می کنه. حتی وقتی setup رو روی دستگاه خودم نصب می کنم درست کار می کنه . اما وقتی از اون setup میسازم ، و روی رایانه دیگه ای نصب می کنم فقط در هنگام ارتباط با دیتابیس، error های متفاوتی میده.

در هنگام اضافه کردن یک سطر به recordset :

اگر بانک access 2003 باشه

و فایل از پوشه programfiles اجرا بشه خطا : cannot Update. Database or Object is read-only
و فایل از جای دیگه ای اجرا بشه خطا : Could not load type 'ADODB.FiledsToInternalFiledsMarshaler' from assembly 'NoAfarin'.Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'

اگه بانک access 2007 باشه

و فایل از پوشه Program Files اجرا بشه خطا:
Current Recordset Does not support updating. This may be a limitation of the provider, or of the selected locktype.
و اگه پوشه نصب شده پروژه جای دیگه ای کپی بشه و اجرا بشه خطا مثل حال دوم مورد قبلی است

کد ساختن connection و recordset به قرار زیر است:

Public Class MainForm
Inherits System.Windows.Forms.Form
Public mycon As New ADODB.Connection
Public myrec As New ADODB.Recordset
...
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim mydbstring As String = Windows.Forms.Application.StartupPath
mycon.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + mydbstring + "\Database.accdb")
myrec.Open("products", mycon, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)

kapkap
چهارشنبه 31 فروردین 1390, 10:16 صبح
با سلام مجدد ،
من علت مشکل رو پیدا نکردم اما راه حل رو پیدا کردم که توی یک فروم توسط دو نفر تایید شده بود.
1. در پروژه و در محیط VS2010 از منوی Project گزینه Properties را انتخاب کنید.
2. در Refrences مورد Microsoft AvtiveX Data Object 2.7 Library (من از َADO 2.7 استفاده کرده ام ، ممکن است برای شما متفاوت باشه) رو انتخاب کنید.
3. در پنجره Properties، گزینه Embed Interop Types را به False تغییر دهید.
4. با این کار امکان ویرایش خصوصیت Copy Local فراهم می آید. این خصوصیت را به True تغییر دهید. (با این کار فایل .dll مربوطه به فایل های پوشه Application از پروژه Setup اضافه می شه.)
5. پروژه رو دو باره Build و تست کنید

با تشکر از مشاهده سئوال و پاسخ آورده شده.