استفاده از اکسل به عنوان دیتا بیس

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

    • 2013/02/10
    • 38

    استفاده از اکسل به عنوان دیتا بیس

    سلام یک فایل نمونه میذارم دوستان که تخصص در این زمینه دارند کد ها را مو شکافی کنند تا مبحث جدیدی راآغاز کنیم در این فایل از دستورات اس کیو ال استفاده شده ولی من دقیقا مطلع نیستم چطور شده چه اتفاقی افتاده

    use excel as data base
  • anahita

    • 2013/02/10
    • 38

    #2
    RE: استفاده از اکسل به عنوان دیتا بیس

    دوستان لطفا کمک کنید

    کامنت

    • ~M*E*H*D*I~
      • 2011/10/19
      • 4377
      • 70.00

      #3
      RE: استفاده از اکسل به عنوان دیتا بیس

      فایل رو دانلود کردم ولی هنوز فرصت نکردم بررسی کنم ، البته در استفاده از دستورات SQL طبق گفته شما مهارت ندارم ، به نظر من شما سوال کلی نپرسید ، مرحله به مرحله مشکلات رو بفرمایید تا بحث بشه

      sigpic

      کامنت

      • anahita

        • 2013/02/10
        • 38

        #4
        RE: استفاده از اکسل به عنوان دیتا بیس

        سلام من اولین بار هست که دستوراتsql را در اکسل می بینم به همین دلیل دوست دارم این مبحث را یاد گیرم اگه کمک کنید ممنونم

        کامنت

        • anahita

          • 2013/02/10
          • 38

          #5
          RE: استفاده از اکسل به عنوان دیتا بیس

          از دوستان کسی می تونه این فایل را تشریح کنه؟ خیلی وقته توی انجمن بی جواب مونده لطفا کمک کنید تا ما هم یاد بگیریم[hr]

          کامنت

          • shamsololama

            • 2010/02/15
            • 940

            #6
            RE: استفاده از اکسل به عنوان دیتا بیس

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

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

            این رو به این دلیل میگم که دوستان بدونن این کدها از کجا اومده و جریانش چیه

            برای شروع من یه کار عملی رو میگم که با هم شروع کنیم تا به نتیجه ای مطلوب تر برسیم و استفاده دستورات اس کیو ال را در اکسل تجربه کنیم

            برای اینکار دوستا بهتره قبل از این کار دستورات اسکیو ال رو یه مطالعه بکنن البته فعلا همون دستورات select , where و برای شروع کافیه و چندان سخت هم نیست
            و یه فایل که دستورات اسکیوال رو توضیح داد هم اینجا قرار میدم برای دوستانی که اشنایی با این دستورات ندارن

            فایل ضمیمه:
            [attachment=1153]

            ***********
            ما برای اینکه از دستورات اسکیوال استفاده کنیم نیاز به یک دیتابیس داریم که با استفاده از دستورات اسکیوال جستجو کرده و مثلا گزارش گیری کنیم
            حالا این دیتابیس میتونه هر دیتابیسی باشه مثلا اسکیوال سرور یا اکسس و یا خود اکسل
            ما برای شروع کار خود اکسل رو انتخاب میکنیم

            یک فایل جدید اکسل باز کرده و در شیت یک اطلاعاتی رو وارد کنید
            radi card_no company Name_E Name_F Job
            که از این قبیل است مثلا ردیف وشماره کارت و شرکت و نام انگلیسی نام فارسی و شغل
            که این سرتیتر رو به انگلیسی می نویسیم برای اینکه برای استفاده از این اسمها تو کد نویسی باعث خطای نوشتاری نشیم
            و اطلاعاتی رو زیرش وارد میکنیم که برای راحتی کار و یک دست بودن اطلاعات همه شما دوستان در تمرین فایل نمونه ای رو قرار میدم

            فایل نمونه :
            [attachment=1154]

            و محدوده اطلاعات یا محدوده ای که به عنوان تیبل یا دیتابیسمون در نظر دارم رو در این شیت نام گذاری میکنیم یعنی انتخابش میکنم و راست کلیک و یک اسم براش انتخاب میکنیم
            که من این محدوده به اسم تیبل یک نام گذاری کردم Table1
            تا اینجا دیتابیسمون رو آماده کردیم

            حالا به شیت دو رفته و این مراحل رو اجرا کنید

            از منوی بالا Data رو انتخاب کنید
            گزینه Existing Connections v را کلیک کنید
            از منوی باز شده کلید بروز Browse For Mor را بزنید
            از تو سیستم همین فایل رو هرجا ذخیر کرده اید پیدا کرده و انتخاب کنید (یا دیتابیس مورد نظر)
            و پس از انتخاب منوی باز شده که منوی سلکت تیبل باز میشه که از تو اون تیبلی که مد نظرتون هست رو انتخاب میکنید و ما همون نامی که برای محدوده نوشته بودیم رو انتخاب میکنیم
            که در این حالت ممعمولا باید نام شیتها به اضافه نامی که انتخاب کرده بودیم باید وجود داشته باشه پش از انتخاب آن نام کلید تائید رو بزنید

            در این قسمت منوی اینپورت دیتا باز میشه که شما همون گزینه تیبل که پیش فرض انتخاب شده رو میگذارید به حالت انتخاب بمونه و سل A1 را از تو صفحه یعنی شیت دو انتخاب میکنی جای که میخواهید تیبل آنجا ساخته بشه
            و تائید میکنید

            در اینجا تیبلی ساخته میشه که تمام اطلاعات همان جدول یا دیتابیسمون تو شیت یک رو دارد

            اگر تا اینجا پیش رفتین زمینه رو آماده کردین برای نوشتن و تمرین دستورات اسکیوال

            ادامه دارد......
            فایل های پیوست شده
            ---------------------------------------------------------------------------------------------------
            بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
            shamsololama@yahoo.com
            09177733411

            کامنت

            • khakzad

              • 2010/03/17
              • 2034
              • 85.00

              #7
              RE: استفاده از اکسل به عنوان دیتا بیس

              با سلام خدمت استاد بزرگوار
              واقعا خیلی ممنون از وقتی که میذارید
              من که مرحله به مرحله انجام دادم.بی صبرانه منتظر مراحل بعدی هستم

              کامنت

              • afshin160

                • 2010/06/21
                • 76

                #8
                RE: استفاده از اکسل به عنوان دیتا بیس

                سلام ...
                مطلب جالبی بود .رفتم بررسی کردم . کلا" مبحث برنامه نویسی ... سعی می کنم در این بحث شیرین شرکت کنم .لذا یه داگیومنت براتون میزارم .امید وارم مفید باشه .



                DAO/ADO Objects
                There are several ways to connect to a database in VBA whether it is a relational database (RDBMS) or a flat-file database (like Excel).
                Also, where and what type of database application/server it is will pretty much determine which is considered best for the job.
                The two I'm going to mention in the article (DAO and ADO) is considered the more popular techniques deployed but for your reference you may want to investigate the older RDO (Remote Data Object) which has been really replaced with DAO, OLE-DB and ODBC to help establish which would be best for your solution.
                DAO
                DAO stands for Data Access Objects and is one of the technologies to allow communications to external applications (mainly databases).
                In order to use this feature, users will need to add the DAO library to the project.
                Choose from the Tools menu and select Reference…

                This library will than allow objects to be created to interrogate a database, tables, fields and return information to populate a spreadsheet. This will also allow users to add, edit, update and delete data to an external file without the need to open the associated application.
                An advanced feature of this library will even allow users to create, modify and delete structures of a database whether a table, query, stored procedure or fields.
                Using the control flow techniques as discussed in this manual, the user can fully control how data should be handled - opening the potential power of VBA.

                Note: In order to test this section, users will need an Access database and will need to familiarise themselves with the database. It is not essential to have Microsoft Access loaded as this reference uses the backdoor but it will be difficult to check the database without it!

                Example - Connecting to a database:
                Sub ConnectDB()
                Dim db As Database
                Dim rst As Recordset

                Set db = OpenDatabase("C:\db1.mdb")
                Set rst = db.OpenRecordset("Customers")

                'displays the first record and first field
                MsgBox rst.Fields(0)

                'close the objects
                rst.Close
                db.Close

                'destroy the variables
                Set rst = Nothing
                Set db = Nothing
                End Sub
                The above example opens an Access database (db1.mdb) in memory and sets a reference to one of its known tables using the ‘OpenRecordset’ method. It then displays the first row and first field of the table:

                The property Fields of the RecordSet object is a collection (or array) that is held in memory and by changing the element number, users can return a different field (column of the table).
                rst.Fields(1)
                The above illustration would show the customer’s name instead of the ID number.

                A good discipline is to close and set an object to Nothing that releases memory, hence the last four lines of code.

                Example - Working with records:
                'Opens a connection to the Customers table
                'and populates a blank worksheet.
                Sub PopulateCustomers()
                Dim db As Database
                Dim rst As Recordset
                Dim i As Long

                Set db = OpenDatabase("C:\db1.mdb")
                Set rst = db.OpenRecordset("Customers")

                'look through each record and populate
                'ID, Name and Country into a worksheet.
                Do Until rst.EOF
                ActiveCell.Offset(i, 0).Value = rst.Fields(0)
                ActiveCell.Offset(i, 1).Value = rst.Fields(1)
                ActiveCell.Offset(i, 2).Value = rst.Fields(8)
                i = i + 1
                rst.MoveNext
                Loop

                'close the objects
                rst.Close
                db.Close

                'destroy the variables
                Set rst = Nothing
                Set db = Nothing
                End Sub
                The above example once again opens the table ‘Customers’. Using a conditional loop at which point the property EOF (End Of File) returns True or False every time the record changes using the MoveNext method, three columns in the worksheet from the starting active cell are populated by three different field indexes.
                Even though the above example used rst.Fields(8) to determine the ninth column, it may be fair to say that users may not know the position number of the field but instead know its fieldname. In this case, users can refer to the name of the field as a string argument.
                rst.Fields(“Post Code”).
                Note: Be careful to include a command to increment the collection (MoveNext method) otherwise this would cause the procedure to loop infinitely or run out of worksheet rows firing an error. Save your work first before testing the above.
                When interrogating a table in a database, it may be required to test to see if the table actually has records in it before iterating through each record.

                Wrap an If statement around the loop to test this out:
                If Not rst.EOF And Not rst.BOF Then
                [code here]...
                End If
                If this returns True then at least one record is present. If both EOF and BOF are True, it means the cursor is positioned at the beginning and at the end of the record set (which means it’s empty).
                The Not keyword inverses the returning value which means that in the above example, both must be False if this is to run any code in between the statement.

                Example - Editing records in a database:
                Not only can users populate data from an external database, but also it is possible to change data in an external database.
                'Opens a connection to the table Customers
                'and adds a new record and then updates and closes
                Sub AddNewRecord()
                Dim db As Database
                Dim rst As Recordset

                Set db = OpenDatabase("C:\db1.mdb")
                Set rst = db.OpenRecordset("Customers")

                rst.AddNew
                rst.Fields("Customer ID") = "XYZ"
                rst.Fields("Company Name") = "XYZ Foods Ltd"
                rst.Fields("Post Code") = "NW1 8PY"
                rst.Update

                'close the objects
                rst.Close
                db.Close

                'destroy the variables
                Set rst = Nothing
                Set db = Nothing
                End Sub
                The above example once again opens a connection to the ‘Customer’ table and then uses two methods to add and update the new record.
                The Add method triggers the mode to add the record but does not save it to the table until you call the Update method.
                Note: Be careful to consider the table’s structure and database rules that are often implemented such as primary keys and foreign indexes. The above example would fail if the customer id field was a unique primary key and the table already had such a reference.
                Further coding would be required to test to see if the record number existed, before adding and updating the record.
                To edit a record, users must first locate the record (if it can be found) and then use the Edit method.
                rst.Edit
                rst.Fields("Customer ID") = "XYZ"
                rst.Fields("Company Name") = "XYZ Foods Ltd"
                rst.Fields("Post Code") = "W12 6RF"
                rst.Update

                Example - Creating a table:
                'Opens a connection to the table Customers
                'and adds a new record and then updates and closes
                Sub CreateTable()
                Dim db As Database
                Dim rst As Recordset
                Dim tbl As TableDef

                Set db = OpenDatabase("C:\db1.mdb")
                Set tbl = db.CreateTableDef("Contact Log")

                With tbl
                .Fields.Append .CreateField("Log ID", dbInteger)
                .Fields.Append .CreateField("Date", dbDate)
                .Fields.Append .CreateField("Caller", dbText)
                .Fields.Append .CreateField("Comment", dbText)
                .Fields.Append .CreateField("Completed", dbBoolean)
                db.TableDefs.Append tbl
                End With

                Set rst = db.OpenRecordset("Contact Log")
                rst.AddNew
                rst.Fields("Log ID") = 1
                rst.Fields("Date") = Date
                rst.Fields("Caller") = "Ben Beitler"
                rst.Fields("Comment") = "Arranged VBA training next week."
                rst.Fields("Completed") = True
                rst.Update

                'close the objects
                rst.Close
                db.Close

                'destroy the variables
                Set rst = Nothing
                Set tbl = Nothing
                Set db = Nothing
                End Sub

                The above example will create a new table ‘Contact Log’, create new fields and then bind it to the new table using db.TableDefs.Append tbl. Next it will add a single record using the correct data to match the data types as defined in the table.
                This procedure will only run once and then cause an error if executed again. This is due to the fact this database cannot contain duplicate named tables.

                Therefore, users need to add error-handling procedures as well as testing to see if the table exists.
                To delete a table along with its records, use db.TableDefs.Delete "Contact Log".
                Again an error will be fired if the system cannot locate the table (misspelling or already deleted).

                There are many properties and methods of DAO which are not covered in this guide. This library allows many ways to produce the same effect which include writing SQL (structured query language).
                ADO
                ADO stands for ActiveX Data Objects is an alternative method of connecting to a database.
                In order to use this feature, users will need to add the ADO library to the project.
                Choose from the Tools menu and select Reference…

                Note: You may have noticed that there several versions of ActiveX Data Objects in the illustration above. Generally, you should choose the latest version but depending on which version of Excel (or more accurately Windows operating system) try and pick the best fit version. For example 2.8 is for those running on Windows XP where as users would choose 6.0 for Windows Vista.

                This library will than allow objects to be created to interrogate a database, tables, fields and return information to populate a spreadsheet. This will also allow users to add, edit, update and delete data to an external file without the need to open the associated application.
                An advanced feature of this library (ADOX) will even allow users to create, modify and delete structures of a database whether a table, query, stored procedure or fields.
                Using the control flow techniques as discussed in this manual, the user can fully control how data should be handled - opening the potential power of VBA.

                Note: In order to test this section, users will need an Access database and will need to familiarise themselves with the database. It is not essential to have Microsoft Access loaded as this reference uses the backdoor but it will be difficult to check the database without it!

                Example - Connecting to a database:
                Sub ConnectExcelDB()
                Dim cn as ADODB.Connection

                Set cn = New ADODB.Connection

                With cn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=C:\pivot data.xls;" & _
                "Extended Properties=Excel 8.0;"
                .Open
                End With
                End Sub
                The above example creates a connection and open the workbook 'pivot data'. It requires the Extended Properties=Excel 8.0 argument (which users need to adjust for their own version of Excel).

                Sub ConnectAccessDB()
                Dim cn As ADODB.Connection

                Set cn = New ADODB.Connection

                With cn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=C:\db2.mdb;"
                .Open
                End With
                End Sub
                The above example connects to an Access database (db2).

                There other ways to connect as well as setting optional arguments which control the method of connection (using ODBC or DSN-Less etc) which is beyond this article.

                Example - Reading from a database:
                Using an Access database, users can connect to table, query or write SQL (structured query language) into the calling object.
                Sub ReadingData()
                Dim cn As ADODB.Connection
                Dim rs As ADODB.Recordset

                Set cn = New ADODB.Connection

                With cn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=C:\db2.mdb;"
                .Open
                End With

                Set rs = New ADODB.Recordset
                'opens a connection to a table called customers.
                rs.Open "Customers", cn, adOpenKeyset, adLockOptimistic, adCmdTable
                'show the second fields value, first record (column 2, row 1).
                Debug.Print rs.Fields(1).Value 'second columns - starts at 0

                rs.Close
                cn.Close

                Set rs = Nothing
                Set cn = Nothing
                End Sub
                The above example creates a connection. It then creates another new object (rs) which the recordset of a table, query or SQL source and opens it too.
                Now you have a collection of data (all records in that file). Using a property (Fields), you can pass either an index or string name into it to refer to any field in that source file and return one of several values (in this case the data value).

                Make sure you close and dispose of the objects when finished (and in the correct order) though it will clear and dispose of all objects when the procedure comes to an end - just good habits of programming!

                To refer to an actual field instead of an index, use Fields("Customer Name").

                It is good practice to narrow down the recordset to the smallest amount of data in memory which the above example fails to do (all records). Instead, consider passing a query or SQL statement instead:

                rs.Open "Select * From Customers Where Country='UK';", cn .....

                There are optional arguments which also help performance and restrictions to an open connection which I've used in my example above adOpenKeyset, adLockOptimistic, adCmdTable and will require further investigation to help establish the rule (refer to VBA help for more information).

                Example - Writing to a database:
                Create a connection and open a recordset (table) to add, edit and delete records.
                Sub EditingData()
                Dim cn As ADODB.Connection
                Dim rs As ADODB.Recordset

                Set cn = New ADODB.Connection

                With cn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=C:\db2.mdb;"
                .Open
                End With

                Set rs = New ADODB.Recordset
                rs.Open "Customers", cn, adOpenDynamic, adLockOptimistic
                'edit the second field, first record's value.
                rs.Fields(1).Value = "Always Open QM"
                rs.Update 'save the changes.

                rs.Close
                cn.Close

                Set rs = Nothing
                Set cn = Nothing
                End Sub
                Using the rs.Update property enforces any changes to be saved and written to the database.

                If you wish add a new record, you can use rs.AddNew method but it will still need to use rs.Update to save the changes.

                Example:
                Sub NewRecord()
                Dim cn As ADODB.Connection
                Dim rs As ADODB.Recordset

                Set cn = New ADODB.Connection

                With cn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=C:\db2.mdb;"
                .Open
                End With

                Set rs = New ADODB.Recordset

                rs.Open "Customers", cn, adOpenDynamic, adLockOptimistic
                'adding a new record.
                rs.AddNew
                rs.Fields(0).Value = "XYZ" 'customer ID field
                rs.Fields(1).Value = "XYZ Limited" 'customer name field
                rs.Fields(5).Value = "London" 'city field
                rs.Fields(8).Value = "UK" 'country field
                rs.Update 'save the changes.

                rs.Close
                cn.Close

                Set rs = Nothing
                Set cn = Nothing
                End Sub
                The above example populates new values to four fields and then saves the changes. Make sure any record being added satisfies the rules of the data source which is being used to store the data which will include indexing (which is generally a mandatory field).

                Other useful methods include EOF (end of file) and BOF (beginning of file) which allows you to iterate through records using loops. - look at the help for more information.

                There is much, much more on this subject (I've not done this justice) and users should now be confident to go off and investigate further using various other resources (books and the web!).

                Finally, which one to use DAO or ADO?
                There are many arguments which one should use but as a general rule if you are going to communicate with Microsoft 'Jet' engine (Access, SQL etc) then using DAO is quicker and easier to master.
                Consider using ADO for across platform applications typically over the web (server) and non-Microsoft Window environments which have the capability to create DSN-less connections. It also handles multiple databases at the same time and is considered the standard with other programming languages.
                Both have similar members (methods and properties) and can conflict if both are being referenced in the same module.



                4shared is a perfect place to store your pictures, documents, videos and files, so you can share them with friends, family, and the world. Claim your free 15GB now!
                ***برای رسیدن به هدف فقط پشتکار لازم است***
                ----------------------------------------------------
                آرزو كن به اندازه ي تلاشت ، يا تلاش كن به اندازه ي آرزوهايت (گاندي)

                کامنت

                • anahita

                  • 2013/02/10
                  • 38

                  #9
                  RE: استفاده از اکسل به عنوان دیتا بیس

                  ممنون از استاد شمس العلما واقعا خیلی خوب بود منتظر ادامه مطالب هستیم

                  کامنت

                  • shamsololama

                    • 2010/02/15
                    • 940

                    #10
                    RE: استفاده از اکسل به عنوان دیتا بیس

                    نوشته اصلی توسط shamsololama
                    با درود فراوان
                    اول عذرخواهی میکنم که نتونستم به موقع جواب بدم دوستا ببخشن

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

                    این رو به این دلیل میگم که دوستان بدونن این کدها از کجا اومده و جریانش چیه

                    برای شروع من یه کار عملی رو میگم که با هم شروع کنیم تا به نتیجه ای مطلوب تر برسیم و استفاده دستورات اس کیو ال را در اکسل تجربه کنیم

                    برای اینکار دوستان بهتره قبل از این کار دستورات اسکیو ال رو یه مطالعه بکنن البته فعلا همون دستورات select , where و برای شروع کافیه و چندان سخت هم نیست
                    و یه فایل که دستورات اسکیوال رو توضیح داد هم اینجا قرار میدم برای دوستانی که اشنایی با این دستورات ندارن

                    فایل ضمیمه:


                    ***********
                    ما برای اینکه از دستورات اسکیوال استفاده کنیم نیاز به یک دیتابیس داریم که با استفاده از دستورات اسکیوال جستجو کرده و مثلا گزارش گیری کنیم
                    حالا این دیتابیس میتونه هر دیتابیسی باشه مثلا اسکیوال سرور یا اکسس و یا خود اکسل
                    ما برای شروع کار خود اکسل رو انتخاب میکنیم

                    یک فایل جدید اکسل باز کرده و در شیت یک اطلاعاتی رو وارد کنید
                    radi card_no company Name_E Name_F Job
                    که از این قبیل است مثلا ردیف وشماره کارت و شرکت و نام انگلیسی نام فارسی و شغل
                    که این سرتیتر رو به انگلیسی می نویسیم برای اینکه برای استفاده از این اسمها تو کد نویسی باعث خطای نوشتاری نشیم
                    و اطلاعاتی رو زیرش وارد میکنیم که برای راحتی کار و یک دست بودن اطلاعات همه شما دوستان در تمرین فایل نمونه ای رو قرار میدم

                    فایل نمونه :


                    و محدوده اطلاعات یا محدوده ای که به عنوان تیبل یا دیتابیسمون در نظر دارم رو در این شیت نام گذاری میکنیم یعنی انتخابش میکنم و راست کلیک و یک اسم براش انتخاب میکنیم
                    که من این محدوده به اسم تیبل یک نام گذاری کردم Table1
                    تا اینجا دیتابیسمون رو آماده کردیم

                    حالا به شیت دو رفته و این مراحل رو اجرا کنید

                    از منوی بالا Data رو انتخاب کنید
                    گزینه Existing Connections v را کلیک کنید
                    از منوی باز شده کلید بروز Browse For Mor را بزنید
                    از تو سیستم همین فایل رو هرجا ذخیر کرده اید پیدا کرده و انتخاب کنید (یا دیتابیس مورد نظر)
                    و پس از انتخاب منوی باز شده که منوی سلکت تیبل باز میشه که از تو اون تیبلی که مد نظرتون هست رو انتخاب میکنید و ما همون نامی که برای محدوده نوشته بودیم رو انتخاب میکنیم
                    که در این حالت ممعمولا باید نام شیتها به اضافه نامی که انتخاب کرده بودیم باید وجود داشته باشه پش از انتخاب آن نام کلید تائید رو بزنید

                    در این قسمت منوی اینپورت دیتا باز میشه که شما همون گزینه تیبل که پیش فرض انتخاب شده رو میگذارید به حالت انتخاب بمونه و سل A1 را از تو صفحه یعنی شیت دو انتخاب میکنی جای که میخواهید تیبل آنجا ساخته بشه
                    و تائید میکنید

                    در اینجا تیبلی ساخته میشه که تمام اطلاعات همان جدول یا دیتابیسمون تو شیت یک رو دارد

                    اگر تا اینجا پیش رفتین زمینه رو آماده کردین برای نوشتن و تمرین دستورات اسکیوال

                    ادامه دارد......

                    با درود فراوان
                    و همچنین پوزش بخاطر تاخیر که به خاطر مسافرت عید پیش اومد بالا خره بعد از مدتی تونستم برم مسافرت و کرمانشاه و همدان شهر کرد و شهر های اطرافشون سری بزنم جای همه شما خالی

                    ادامه مطلب:
                    تا انجایی برنامه رو آماده کردیم که اماده نوشتن دستورات اسکیوال شد
                    خب یک دستور ساده یعنی ساده ترین دستور اسکیوال را انتخاب میکنیم برای نوشتن یعنی این دستور
                    Select * from table1
                    همانطور که همه دوستان میدونن معنی این دستور اینه که سلکت یهنی انتخاب کن و ستاره یا همون استار یعنی همه ستونها فرام هم یعنی از تیبل یک هم همون تیبل مد نظرمون هست
                    پس با اجرای این دستور تمام دیتابیس خواهد آمد و در واقع با اجراش زیاد تغییری تو جدولمون تو شیت دو نمی بینیم چون خودش از اول هم همه اطلاعات رو آورده بود و موجود بود ولی با این کار یک باز از اول اطلاعات میاد یعنی به روز میشه
                    خب برای اجرای این دستور چیکار کنیم و کجا بنویسیم
                    روی تیبل تو شیت دو راست کلیک کنید
                    تقریبا گزینه دوازدهم نوشته Table
                    موس روی تیبل که ببرید گزینه های رو در اختیار ما قرار میده
                    توجه داشته باشید این گزینه ها بیشتر از زمانی است که ما یک تیبل رو تو صفحه اکسل ایجاد کردیم و به این صورتی که الان انجام دادیم به هیچ دیتابیسی وصل نکردیم میتونید امتحان کنید و تو یک صفحه یک تیبل ایجاد کنید و روی این گزینه بیائید ببیند گزینه هاش خیلی کمتر هست

                    موس روی تیبل که قرار دادین از گزینه های باز شده شما Edit Query را انتخاب کنید
                    یک منو باز میشه
                    که سه قسمت داره
                    connection
                    Command Type
                    Command Text
                    که اینها رو بعدا توضیح میدم
                    شما گزینه دوم رو یعنی کامند تایپ رو روز sql قرار بدید
                    و گزینه سوم هم همان مکانیست که باید دستورات اسکیول را بنویسیم
                    پس این دستور را وارد کنید و تایید بزنید
                    select * from table1
                    حالا تمام اطلاعات رو برای ما خواهد آورد ولی همانطور که عرض کردم چون از اول همه اطلاعات بودن تغییر را نمی بینیم
                    ولی به من اعتماد کنید اطلاعات جدید میاد و همون قبلی ها نیستن

                    خب اگر این رو انجام دادید یه دستور دیگه می نویسیم تا نتیجه را بهتر ببینیم
                    دوباره راست کلیک کنید و روی تیبل و روی ادیت کوئری و دستور زیر را وارد کنید

                    select * from table1 where card_no=100031
                    این دستور همون دستور قبلی هست با این تفاوت که یک شرط رو بهش اضاف کردیم
                    where card_no=100031
                    یعنی فقط اون شماره های که تو ستون card_no هستن فقط هر کدوم برابر با 100031 بود برامون بیار
                    و این دستور رو امتحان کنید
                    select * from table1 where Name_e='B. Rasti'
                    اینجا همانطور که مشاهد میکنید برای کلمات متنی باید بین دو علامت ' قرار بگیرن

                    و این دستور رو هم امتحان کنید

                    select * from table1 where Name_e like 'B%' w
                    این w اضافی هست فقط نوشتم که دستور به هم نریزه
                    این دوستور تو ستون Name_e تمام کلماتی که با B شروع میشن رو میاره

                    ادامه دارد.........




                    ---------------------------------------------------------------------------------------------------
                    بمانیم تا کاری کنیم ،نه کاری کنیم تا بمانیم (دکتر شریعتی)
                    shamsololama@yahoo.com
                    09177733411

                    کامنت

                    • afshin160

                      • 2010/06/21
                      • 76

                      #11
                      RE: استفاده از اکسل به عنوان دیتا بیس

                      سلام...
                      توصيه مي كنم حتما" در رابطه با TSql Querying تحقيق كنيد.
                      فرم كلي دستور selecet
                      select .....Top....Distinct....form....join......on...... ...where......Group By ...having.........order By
                      كه ترتيب منطقي ارزيابي يك select به صورت زير است(Logical order)

                      1- from ....join
                      2- on
                      3- where
                      4- Group By
                      5- having
                      6- select
                      7-Distinct
                      8-order By
                      9-Top
                      توجه : مي توان حاصل يه select را در يك select ديگر و در يك دستور استفاده كرد يعني حاصل يك select ميشه ديتابيس select ديگه .! جالبه نه .... دنيايي كار ميشه با چند خط كد ساده نوشت .ديگه احتياجي به كلي كد نويسي نيست .حتي ميشه چيزي شبيه pivot table راخودتون درست كنيد . اين چيزي بود كه در چند تاپيك قبلي سوال كرده بودم . و با آشنايي SQL در اكسل ميشه pivot table را درست كرد .
                      مي بايست دستور را به اين ترتيب ارزيابي كنيم كه مي تواند بعضي از قسمتها استفاده نشود .
                      يك ديتابيس با فيلد هاي id-name-famli-phone-fax-group1-group2 -mablaghايجاد كنيد
                      نام ديتابيس: data
                      تمام فيلد هايي كه id=3 را نشان ميدهد كه قاعدتا" بايد يك ركورد را نشان بدهد .
                      trSQL = "SELECT * FROM [data$] WHERE id=3"

                      تمام ركورد هاي فيلد هاي id,name, famli,phone ,tel,fax را نشان ميدهد .
                      strSQL = "SELECT id,name, famli,phone ,tel,fax FROM [data$]"

                      مجموع mablagh را در هر گروه مي دهد . توجه : حتما" فيلدي كه در group by مي آوريم را بايد به عنوان يك فيلد در select ذكر كنيم.
                      strSQL = "SELECT group1,sum (mablagh) from [data$] group by group1

                      جالبه نه ....!!!!!

                      حالا يه چيز قشنگ تر .....

                      strSQL = "SELECT id,name, famli from ( SELECT * FROM [data$] WHERE name=ali(
                      )
                      اين اول select داخلي را اجرا مي كند بعد حاصل را كه تمام ركوردهاي ديتابيس با شرط name=ali را به عنوان ديتابيس جديد در نظر مي گيرد و select بيروني را روي اون ديتابيس جديد اعمال مي كند .


                      موفق باشيد.
                      ***برای رسیدن به هدف فقط پشتکار لازم است***
                      ----------------------------------------------------
                      آرزو كن به اندازه ي تلاشت ، يا تلاش كن به اندازه ي آرزوهايت (گاندي)

                      کامنت

                      • afshin160

                        • 2010/06/21
                        • 76

                        #12
                        RE: استفاده از اکسل به عنوان دیتا بیس

                        سلام ....
                        قبل از قطعی طولانی مدت سایت یه بحث خیلی جالب در مورد ADO در اکسل شروع شد . ولی نمی دونم چرا کسی دیگه پیگیری نمی کنه !!!!؟
                        به هرحال من سعی می کنم این بحث را با یه سوال به جریال بندازم .
                        چطور می شود pivot table را در Vba با ADO پیاده سازی کزد؟
                        ***برای رسیدن به هدف فقط پشتکار لازم است***
                        ----------------------------------------------------
                        آرزو كن به اندازه ي تلاشت ، يا تلاش كن به اندازه ي آرزوهايت (گاندي)

                        کامنت

                        چند لحظه..