# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > مقالات مرتبط با Microsoft .Net Framework >  مقاله - کار با ADOX - چگونگی ایجاد بانک اطلاعاتی Access

## علیرضا مداح

با سلام . 
به دلیل اینکه 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;" &amp; _
                  "Data Source=C&#58;\NewMDB.mdb;" &amp; _
                  "Jet OLEDB&#58;Engine Type=5"
        'B
        Dim NewDatabase As New Catalog
        'C
        NewDatabase.Create&#40;ConnStr&#41;
        'D
        NewDatabase.let_ActiveConnection&#40;ConnStr&#41;
توضیحات : 
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&#40;"FName", DataTypeEnum.adVarWChar, 20&#41;
        PersonalTB.Columns.Append&#40;"LName", DataTypeEnum.adVarWChar, 20&#41;
        PersonalTB.Columns.Append&#40;"Age", DataTypeEnum.adInteger, 2&#41;
        PersonalTB.Columns.Append&#40;"PersonalID", DataTypeEnum.adInteger, 5&#41;
        'D
        PersonalTB.Keys.Append&#40;"PerSonalID", KeyTypeEnum.adKeyPrimary, "PersonalID"&#41;
        'E
        NewDatabase.Tables.Append&#40;PersonalTB&#41;

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

Public Overridable Sub Append&#40;ByVal Item As Object, Optional ByVal Type As ADOX.DataTypeEnum = 202, Optional ByVal DefinedSize As Integer = 0&#41;

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

Public Overridable Sub Append&#40;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 = ""&#41;
-  توسط آرگومان Column نام فیلدی را که میخواهیم کلید اصلی بر روی آن قرار گیرد را توسط رشته تعیین مینماییم .  

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

----------


## vbapr2005

ای ول این دیگه آخرشه
خیلی خیلی باحال بود

----------


## Semir

سلام


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

----------


## ehsan_ansaripoor

آقا یک دنیا ممنون

----------


## skywork

با عرض سلام خدمت جناب آقای نصیری

من مشکل ساخت کوئری برای بانک اطلاعاتی دارم و نمی دونم چگونه درست کنم  در محیط    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

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

----------


## hamidghasemi

سلام ..................................................  ...........كسي از دوستان نيست كه بتونه راهنمايي كنه؟

----------


## asheykh

با سلام
ضمن تشکر از شما 
خیلی عالی بود
بی زحمت کد ها رو با زبان شیرین #C هم بزارید
با تشکر

----------


## jeer_jeerak

این روش جالب بود ولی خیلی ضعیف بود
من یه جور دیگه بانک رو میسازم
توی روش شما من فیلد از نوع اتونامبر پیدا نکردم
من سه تا فانکشن میزارم که
اولی بانک خالی رو میسازه
 دومی جدول با کلید اصلی اصلی میسازه
سومی جدول با کلید اصلی و کلید فرعی میسازهaval mikham bank ro besazam

Function DBCreate(ByVal DBSource As String) As Boolean

        Dim DB As New ADOX.Catalog
        DB.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBSource)
        Return True
    End Function

intori estefade mishe : DBCreate(FileAddress.mdb)  | Behamin Sadegi shoma ye file mdb e khali sakhtin
-------------------------------------------------------------------------------------------------------------------------------------------------------------------

hala ba in fanction ye table be esme persons behesh ezafe mikonim

 Function tblPersons(ByVal DBSource As String) As Boolean
        Dim Cn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLED  B.4.0;Data Source=" & DBSource)


        Dim CMDtblPersons As OleDb.OleDbCommand = New OleDb.OleDbCommand()
        CMDtblPersons.Connection = Cn
        CMDtblPersons.CommandText = "CREATE TABLE Persons(PID AUTOINCREMENT NOT NULL,FirstName TEXT(50),LastName TEXT(50),CONSTRAINT Persons PRIMARY KEY(pID))"


        Cn.Open()
        CMDtblPersons.ExecuteNonQuery()
        Cn.Close()
        Cn.Dispose()
        Cn = Nothing
        Return True
    End Function


intori estefade mishe : tblPersons(FileAddress.mdb)  | Behamin Sadegi shoma ye jadval ba 3ta fild  sakhtin
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
hala jadvale dovomo misazim ke ba jadvale aval ye realation e yek be chand dare

Function tblPerDets(ByVal DBSource As String) As Boolean
        Dim Cn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLED  B.4.0;Data Source=" & DBSource)
        Dim cmdPd As New OleDb.OleDbCommand("CREATE TABLE PerDets(pdID AUTOINCREMENT NOT NULL,pID INT NOT NULL,dTitle TEXT(50),CONSTRAINT PerDets_FK FOREIGN KEY (pID) REFERENCES Persons (pID) ,CONSTRAINT PerDets PRIMARY KEY(pdID))", Cn)


        Cn.Open()
        cmdPd.ExecuteNonQuery()
        Cn.Close()
        Cn.Dispose()
        Cn = Nothing
        Return True
    End Function

be ravesh e ghabli estefade mishe


fanction e dovom o sevom ye farghe koochooloo dare yani be do ravesh mishe sakht
motmaenam khodetoon baladin
movafagh bashin

----------

