ارتباط اكسل با پايگاه داده اكسس از طريق ado

Collapse
X
 
  • زمان
  • نمایش
حذف همه
new posts
  • zxcvbn

    • 2015/01/06
    • 72
    • 66.00

    ارتباط اكسل با پايگاه داده اكسس از طريق ado

    سلام وقت بخير
    براي ارتباط از اكسل به ساير پايگاه هاي داده ماندد اكسس و SQL دستورات زيادي را مطالعه و در نهايت دستور زير و يا فايل پيوست را براي ارتباط اكسل با يك Table اكسس بنام course و فايل اكسس به نام Database11 كه در دستكتاپ سيستم موجود است نوشته ام.
    اما هر بار با خطاي Run time error مواجه ميشوم.
    لطفا از دوستان اگر كسي اطلاعات داره دستور بنده را ويرايش و ارجاع كنه
    همچنين توضيح بده كه كجاي كار من ايراد داشت
    کد PHP:
    [PHP][CODE][CODE][QUOTE][/QUOTE][/CODE][/CODE
    [/PHP]
    با تشكر


    Private Sub MyProject()


    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim strConnection As String




    Dim strServer, strDatabase, strUsername, strPassword As String




    strServer = "local"
    strDatabase = "C:\Users\h_gholami\Desktop\Database11.accdb"
    strUsername = "Admin"
    strPassword = """"



    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=strServer ;Initial Catalog=strDatabase;User ID= strUsername;Password= strPassword;"




    Set cn = New ADODB.Connection
    cn.ConnectionString = strConnection
    cn.CommandTimeout = 30
    cn.Open
    Set rs = New ADODB.Recordset


    With rs
    .ActiveConnection = cn


    .Open "SELECT * FROM Course"


    Sheet1.Range("A1").CopyFromRecordset rs
    .Close
    End With
    cn.Close




    End Sub

    - - - Updated - - -

    سلام وقت بخير
    براي ارتباط از اكسل به ساير پايگاه هاي داده ماندد اكسس و SQL دستورات زيادي را مطالعه و در نهايت دستور زير و يا فايل پيوست را براي ارتباط اكسل با يك Table اكسس بنام course و فايل اكسس به نام Database11 كه در دستكتاپ سيستم موجود است نوشته ام.
    اما هر بار با خطاي Run time error مواجه ميشوم.
    لطفا از دوستان اگر كسي اطلاعات داره دستور بنده را ويرايش و ارجاع كنه
    همچنين توضيح بده كه كجاي كار من ايراد داشت
    کد PHP:
    [PHP][CODE][CODE][QUOTE][/QUOTE][/CODE][/CODE
    [/PHP]
    با تشكر
    کد PHP:
    Private Sub MyProject()
    Dim cn As ADODB.ConnectionDim rs  As ADODB.RecordsetDim strConnection As String

    Dim strServer
    strDatabasestrUsernamestrPassword As String

    strServer 
    "local"strDatabase "C:\Users\h_gholami\Desktop\Database11.accdb"strUsername "Admin"strPassword """" 
    strConnection "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=strServer ;Initial Catalog=strDatabase;User ID= strUsername;Password= strPassword;"

    Set cn = New ADODB.Connectioncn.ConnectionString strConnectioncn.CommandTimeout 30cn.OpenSet rs = New ADODB.Recordset
    With rs
    .ActiveConnection cn
    .Open "SELECT * FROM Course"
    Sheet1.Range("A1").CopyFromRecordset rs.CloseEnd Withcn.Close

    End Sub 
    فایل های پیوست شده
  • Amir Ghasemiyan

    • 2013/09/20
    • 4598
    • 100.00

    #2
    سلام دوست عزیز
    این خط رو اصلاح بفرمایید. اگر باز هم ارور داد بفرمایید تا دقیقتر بررسی بشه
    کد:
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=strServer ;Initial Catalog=strDatabase;User ID= " & strUsername & ";Password=" & strPassword & ";"

    کامنت

    • zxcvbn

      • 2015/01/06
      • 72
      • 66.00

      #3
      سلام دوست عزیز
      دستور شما رو جایگزین دستور خودم کردم
      این بار خطای Run time error 3001 داده و طبق تصویر پیوست به خط cn.ConnectionString گیر داده
      لطفا یه بررسی مجدد داشته باشید
      اگه این موضوع حل بشه واقعا ممنون میشم
      فایل های پیوست شده

      کامنت

      • Amir Ghasemiyan

        • 2013/09/20
        • 4598
        • 100.00

        #4
        نوشته اصلی توسط zxcvbn
        سلام دوست عزیز
        دستور شما رو جایگزین دستور خودم کردم
        این بار خطای Run time error 3001 داده و طبق تصویر پیوست به خط cn.ConnectionString گیر داده
        لطفا یه بررسی مجدد داشته باشید
        اگه این موضوع حل بشه واقعا ممنون میشم

        دوست عزیز اگه شما میخواید از متود ConnectionString استفاده کنید باید فقط مسیر سورس رو بدین. provider و سایر اطلاعات رو با متود دیگه مشخص کنید.
        مثلا اینطوری:
        کد:
        fpath = "Data Source= C:\sampleDB.accdb"
        rprovider = "Microsoft.ACE.OLEDB.12.0"
        With cnn
        
        
                  .ConnectionString = fpath
                  .Provider = rprovider
                  .Open
        
        
        End With
        برای راحتی کار من پیشنهاد میکنم فقط از متود open استفاده کنید. مثلا اینطوری:

        کد:
        fpath = ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.Name
        str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" _
                                & fpath & """;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
        
        
        cnn.Open str

        کامنت

        • zxcvbn

          • 2015/01/06
          • 72
          • 66.00

          #5
          من اصلا هیچی رو نفهمیدم
          یه لطفی بکن یه فایل کامل با دستور کامل از اول تا اخرش برام بفرستید
          من خیلی حرفه ای نیستم لطفا کمک بفرمایید
          ممنون

          کامنت

          • Amir Ghasemiyan

            • 2013/09/20
            • 4598
            • 100.00

            #6
            بفرمایید این هم یک نمونه کامل از اتصال به دیتابیس در ADO:
            کد:
            Dim cnn As New ADODB.Connection
            Dim rs As New ADODB.Recordset
            Dim strSQL As String
            Dim fpath As String
            Dim str As String
            
            
            Set cnn = New ADODB.Connection
            Set rs = New ADODB.Recordset
            
            
            fpath = ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.Name
            str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" _
                                    & fpath & """;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
            
            
            strSQL = "select * from [Sheet1$]"
            
            
            cnn.Open str
            rs.Open strSQL, cnn

            کامنت

            • zxcvbn

              • 2015/01/06
              • 72
              • 66.00

              #7
              پاسخ

              سلام دوست گرامی ، دستور شما رو اجرا کردم ، یکی اینکه هیچ عکس العملی نشون نداد ، ولی خب خطایی هم نداد، دوم و مهمتر از اون اینکه ارتباطی با اکسس توش ندیدم ، اصلا هدف اینه که دستوری بنویسم که بره از فایل اکسس از جدول x یه داده سطر فلان و ستون فلان رو بخونه و تو سلول اکسل قرار بده

              کامنت

              • Amir Ghasemiyan

                • 2013/09/20
                • 4598
                • 100.00

                #8
                نوشته اصلی توسط zxcvbn
                سلام دوست گرامی ، دستور شما رو اجرا کردم ، یکی اینکه هیچ عکس العملی نشون نداد ، ولی خب خطایی هم نداد، دوم و مهمتر از اون اینکه ارتباطی با اکسس توش ندیدم ، اصلا هدف اینه که دستوری بنویسم که بره از فایل اکسس از جدول x یه داده سطر فلان و ستون فلان رو بخونه و تو سلول اکسل قرار بده

                سلام. ببخشید فراموش کردم ارتباط با اکسسه
                شما در کد بالا بجای خط زیر مسیر فایلتون رو بذارید:
                کد:
                fpath = ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.Name
                و قطعا این خط هم باید تغییر کنه و متناسب با دیتابیس شما نوشته بشه:
                کد:
                strSQL = "select * from [Sheet1$]"
                من پیشنهاد میکنم برای فهم بهتر این مفاهیم و موضوعات این محصول را تهیه بفرمایید:
                جزوه دوره آموزشی کاربرد ADO در بانک های اطلاعاتی مبتنی بر اکسس و اکسل

                کامنت

                • zxcvbn

                  • 2015/01/06
                  • 72
                  • 66.00

                  #9
                  کلا اسکل کردین منو دیگه

                  کامنت

                  چند لحظه..