2015-06-11 3 views
1

Прежде всего, я новичок в программировании.vba access добавить несколько таблиц в один

Вопрос: Я построил код из нескольких примеров из Интернета. База данных называется «Code Holder», в это время у меня есть таблица «test», и в эту таблицу я хочу добавить столько таблиц, сколько есть в базе данных.

  1. Все столбцы будут одинаковыми для всех таблиц
  2. , отличных от «Test» имена таблиц изменится

То, что я до сих пор ниже, код работает нормально, но я не могу показаться, чтобы получить каждую таблицу, добавляемых в таблицу «Test», каждая таблица появляется пробел в SQL строку

Sub append4() 
    Dim db As Database 
    Dim tdf As TableDef 
    Dim rs As Recordset   
    Set db = currentdb() 
    Set rs = db.OpenRecordset("test") 

    For Each tdf In db.TableDefs 
       StrSQL = "INSERT INTO " & "test" & " " & _ 
       "SELECT * " & _ 
       "FROM " & "rs!tablename" & " ;" 
      DoCmd.RunSQL StrSQL 
     Next tdf 

    Set db = Nothing 

End Sub 

Я хочу сказать, что я не установил Rs. правильно, но я не уверен. Любая помощь будет оценена по достоинству.

Благодаря

+0

'Set Rs = db.OpenRecordset ("тест")' говорит, использовать мой стол 'test' как мой .. Но записей тогда вы говорите: 'SELECT * FROM test' .. Это звучит так, как вы хотите? –

ответ

0

Во второй половине дня, после публикации я наткнулся Somthing, что действительно помогло. Ниже приведен обновленный код VBA, и после тестирования он работает для меня.

Thanks Barett, да, я неправильно ссылался на таблицу, но это то, что происходит, когда вы слишком долго смотрите на что-то слишком долгое.

Вы можете копировать и использовать, если вы хотите

'please note there are a few things that one assumes while using this code 
'1 all tables column headers are the same 
'2 this was used with Access 2010 


Sub testeroony2() 


Dim db As DAO.Database 
Dim tdf As DAO.TableDef 
'you can set this database to other databases if you wanted too 
Set db = currentdb 
For Each tdf In db.TableDefs 
    ' ignore system and temporary tables 
    'if you want to use it for your own use then you will need to change "test" that is the main table that gets uploaded too 
    If Not (tdf.Name Like "MSys*" Or tdf.Name Like "~*" Or tdf.Name Like "test") Then 
       'you will need to also change "test" below to the main table you want appended too 
       StrSQL = "INSERT INTO " & "test" & " " & _ 
       "SELECT * " & _ 
       "FROM " & tdf.Name & " ;" 
      DoCmd.RunSQL StrSQL 
    End If 
Next 
Set tdf = Nothing 
Set db = Nothing 
End Sub