I need to copy data from an access table into sql server. I have thought about just linking the tables but this will not work for what I am trying to do. I need the data to export from the access table to the sql server when I click a macro button. Are there any ideas on how I can get started or where to look?
            Asked
            
        
        
            Active
            
        
            Viewed 2,614 times
        
    0
            
            
        - 
                    Google? `Insert Into` – SQLMason Feb 24 '14 at 19:56
- 
                    possible duplicate of [How to do INSERT into a table records extracted from another table](http://stackoverflow.com/questions/74162/how-to-do-insert-into-a-table-records-extracted-from-another-table) – SQLMason Feb 24 '14 at 19:57
- 
                    This seems to be internal to access, it is the right idea. I just need it from Access to SQL Server. – user2119980 Feb 24 '14 at 20:03
- 
                    1Use Access to Link your SQL tables and insert as if they're Access tables. http://office.microsoft.com/en-us/access-help/link-to-sql-server-data-HA102809758.aspx – SQLMason Feb 24 '14 at 20:10
- 
                    Just FYI, SO isn't for "getting started" or "discussion" questions, it's to help with very specific problems with your code. Google is usually a good place to start otherwise. – SQLMason Feb 24 '14 at 20:12
3 Answers
3
            Your macro could use the RunCode action to run a VBA function similar to this one:
Option Compare Database
Option Explicit
Public Function TransferTableToSqlServer()
    DoCmd.TransferDatabase _
            acExport, _
            "ODBC Database", _
            "ODBC;" & _
                "Driver={SQL Server Native Client 10.0};" & _
                "Server=(local)\SQLEXPRESS;" & _
                "Database=myDb;" & _
                "Trusted_Connection=Yes;", _
            acTable, _
            "sourceTableName", _
            "destinationTableName", _
            False
End Function
For more information see
 
    
    
        Gord Thompson
        
- 116,920
- 32
- 215
- 418
- 
                    1
- 
                    1@user2119980 you can replace the `Trusted_Connection=Yes;` parameter with `UID=xxx;PWD=yyy;`. See connectionstrings.com for details. – Gord Thompson Feb 28 '14 at 19:30
- 
                    So like this then: Public Function Update() DoCmd.TransferDatabase _ acExport, _ "ODBC Database", _ "ODBC;" & _ "Driver={SQL Server Native Client 10.0};" & _ "Server=(local)\SQLEXPRESS;" & _ "Database=DATABASE;" & _ "Username=USERNAME;" & _ "Password=PASSWORD;" & _ acTable, _ "CDData", _ "dbo.AC_CDData", _ False End Function – user2119980 Feb 28 '14 at 19:32
- 
                    
- 
                    I got it working but it keeps prompting me for the login which I thought if I put in the code which I did above it wouldn't ask me for it? – user2119980 Feb 28 '14 at 20:11
- 
                    1@user2119980 If you used `Username=` and `Password=` then I don't think that the ODBC driver will recognize those keywords and hence will prompt you for credentials. Try `UID=` and `PWD=` instead. – Gord Thompson Feb 28 '14 at 20:32
- 
                    @Gordo Thompson - that worked. But now I have an issue of it not overwriting the table that is there. It says the table already exists which I know it does but I just want it to upload and overwrite anyway. SO I need it to delete the table and replace it with the updated one, or just overwrite the table that is there – user2119980 Feb 28 '14 at 20:49
1
            
            
        I would link/attach to the sql server table you intend to copy to, making sure it has a primary key(so that it doesn't become readonly to access), and then create an access 'Append' query to select data and map them to the columns in sql server.
Writing a macro to then run the query you have written should be trivially easy.
This method will generally work, though can be slow at times with lots of data.
 
    
    
        E.J. Brennan
        
- 45,870
- 7
- 88
- 116
- 
                    I did utilize this method, but my supervisor said he did not want it done this way. – user2119980 Feb 24 '14 at 20:42
- 
                    1You should ask your supervisor why, and what way s/he prefers then. – E.J. Brennan Feb 24 '14 at 20:45
-1
            
            
        Check Upsizing Wizard for data, indexes, and defaults.
 
    
    
        bjnr
        
- 3,353
- 1
- 18
- 32
- 
                    This doesn't really seem to address the problem. The upsizing wizard is for moving a database to SQL server, not data to an existing SQL server DB. – Brad Feb 24 '14 at 21:01
