PDA

View Full Version : مقاله - کار با ADOX - چگونگی ایجاد بانک اطلاعاتی Access



علیرضا مداح
چهارشنبه 26 اسفند 1383, 10:00 صبح
با سلام .
به دلیل اینکه ADO و ADO.Net امکان ایجاد بانکهای اطلاعاتی Access و تغییر در ساختار آنها را به ما نمیدهند به همین دلیل باید از کتابخانه ADOX استفاده نماییم .

قبل از شروع کار مراحل زیر را دنبال نمایید :
1 – یک WindowsApplication جدید ایجاد نمایید .
2 – بر روی پروژه خود راست کلیک کرده گزینه Add Reference را انتخاب نمایید . در پنجره ظاهر شده وارد برگه COM شده و بر روی گزینه ADO Ext. 2.7 for DDL and Security دوبار کلیک کرده و سپس دکمه OK را بزنید تا کتابخانه ADOX به پروژه شما اضافه گردد .

مرحله اول : ایجاد بانک اطلاعاتی Access


'A'
Dim ConnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\NewMDB.mdb;" & _
"Jet OLEDB:Engine Type=5"
'B
Dim NewDatabase As New Catalog
'C
NewDatabase.Create(ConnStr)
'D
NewDatabase.let_ActiveConnection(ConnStr)
توضیحات :
A.ابتدا متغیری به نام Connstr تعریف کرده و مقدار آن را برابر ConnectionString دیتابیسی که میخواهیم ایجاد کنیم ، قرار میدهیم .
B.برای ایجاد یک دیتابیس ابتدا یک نمونه از شی ء ADOX.Catalog ایجاد مینماییم .
C.با استفاده از تابع Create و متغیر Connstr بانک مورد نظر را ایجاد مینماییم .
D.توسط متد let_ActiveConnection با بانک اطلاعاتی که ایجاد کردیم ارتباط برقرار میکنیم .

مرحله دوم : ایجاد جدول


'A
Dim PersonalTB As New ADOX.Table
'B
PersonalTB.Name = "Personal"
'C
PersonalTB.Columns.Append("FName", DataTypeEnum.adVarWChar, 20)
PersonalTB.Columns.Append("LName", DataTypeEnum.adVarWChar, 20)
PersonalTB.Columns.Append("Age", DataTypeEnum.adInteger, 2)
PersonalTB.Columns.Append("PersonalID", DataTypeEnum.adInteger, 5)
'D
PersonalTB.Keys.Append("PerSonalID", KeyTypeEnum.adKeyPrimary, "PersonalID")
'E
NewDatabase.Tables.Append(PersonalTB)

A.ابتدا یک نمونه از شی ء ADOX.Table ایجاد مینماییم .
B.نام جدول را توسط پروپرتی Name تنظیم مینماییم .
C.در این مرحله میبایست فیلدهای مورد نظر را به جدول اضافه نماییم : برای اینکار باید از متد Append شی ء Columns استفاده نماییم که به صورت زیر تعریف میشود :


Public Overridable Sub Append(ByVal Item As Object, Optional ByVal Type As ADOX.DataTypeEnum = 202, Optional ByVal DefinedSize As Integer = 0)

- توسط آرگومان Item نام فیلد را توسط یک رشته تنظیم مینماییم .
- توسط آرگومان Type نوع فیلد را توسط یکی از ثابتهای شمارشی OX.DataTypeEnumتنظیم مینماییم .
- توسط آرگومان DefineSize اندازه فیلد را به مقدار مورد نظر محدود مینماییم .
D.سپس توسط متد Append مربوط به شی ء Keys یک کلید اصلی بر روی فیلد PersonalID ایجاد مینماییم .
متد Keys.Append به صورت زیر تعریف میشود :


Public Overridable Sub Append(ByVal Item As Object, Optional ByVal Type As ADOX.KeyTypeEnum = 1, Optional ByVal Column As Object = Nothing, Optional ByVal RelatedTable As String = "", Optional ByVal RelatedColumn As String = "")
- توسط آرگومان Column نام فیلدی را که میخواهیم کلید اصلی بر روی آن قرار گیرد را توسط رشته تعیین مینماییم .

E.در این مرحله توسط متد Append مربوط به شی ء Tables جدول مورد نظر را به بانک اضافه مینماییم .

vbapr2005
پنج شنبه 17 شهریور 1384, 13:54 عصر
ای ول این دیگه آخرشه
خیلی خیلی باحال بود

Semir
جمعه 18 شهریور 1384, 14:45 عصر
سلام


اقا دستت درد نکنه خیلی جالب بود.

ehsan_ansaripoor
جمعه 02 دی 1384, 14:12 عصر
آقا یک دنیا ممنون

skywork
جمعه 03 آذر 1385, 23:28 عصر
با عرض سلام خدمت جناب آقای نصیری

من مشکل ساخت کوئری برای بانک اطلاعاتی دارم و نمی دونم چگونه درست کنم در محیط ASP.NET راهنماییم کنید
درضمن من هر بار که محیط آی اس پ خراب می شه مجبورم دوباره محیط رو باز سازی کنم و بعد مشکل اتصال پیدا میکنه و من مجبورم به طور کامل از دات نت خارج شم ...................
OleDbDataAdapter1.fill(dataset11)

و همچنین محیط رو به گونه ای طراحی کردم که بصورت چند تکس باکس در بالا برای نشان دادن محتویات بانک و چند باتون ابتدا و انتها و بعدی و قبلی قرار دادم ولی وقتی کدی که برای آن باتون نوشتم محتویات رکورد بعدی را نشون نمیده ..... برای باتون
DIM POSITION AS INTEGER
DIM ID AS STRING
POSITION =0
ME.VIEWSTATE("POSITION")=POSITION
ID = DATASET11.TABLES(0).ROWS(POSITION).ITEM("AU_ID")
DATAVIEW1.ROWFILTER ="AU_ID = '" & ID &"'"
TEXTBOX1.DATABINDING()
LABEL3.TEXT=POSITION + &" OF " &DATASET11.TABLES(0).ROWS.COUNT

hamidghasemi
سه شنبه 28 آبان 1387, 09:32 صبح
سلام
از راهنمايي خوبي كه براي ساختن فايل اكسس در وي بي گذاشته بودي خيلي ممنونم . خيلي خوب وكامله . ولي من 2 تا سوال دارم كه مي خواستم از شما بپرسم.
1- حالا كه بانك و table رو ايجاد كرديم چطوري داخل يك for بتوانيم به آن ديتا اضافه كنيم؟
2- مي شود بانك را طوري تعريف كنيم كه اگر در مسيرداده شده قبلاً فايلي وجودداشت روي آن اضافه كنه و پيام خطا نده؟
باز هم از راهنمايي شما ممنونم.

hamidghasemi
سه شنبه 28 آبان 1387, 16:57 عصر
سلام .................................................. ...........كسي از دوستان نيست كه بتونه راهنمايي كنه؟