Access получить все таблицы.

Программирование на Visual Basic for Applications
Gogic
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 24.08.2008 (Вс) 13:19

Access получить все таблицы.

Сообщение Gogic » 04.03.2009 (Ср) 2:04

Здравствуйте. Я новичок в работе с Access.

Подскажите пожалуйста, как можно программно сконвертить все таблицы базы данных Access в CSV с разделителями?

Код будет вызываться из Visual Basic.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Access получить все таблицы.

Сообщение alibek » 04.03.2009 (Ср) 8:38

1. Получить список всех таблиц. Если использовать DAO, то через коллекцию TableDefs, если использовать ADOX, то через коллекцию Tables, если использовать ADO, то с помощью метода OpenSchema.
2. Выгрузить каждую таблицу в CSV.
2.1. Можно выгружать через DAO/ADO, указав провайдера CSV.
2.2. Можно процедуру выгрузки написать вручную, она несложная. Я бы советовал именно так.
Lasciate ogni speranza, voi ch'entrate.

plik
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 4
Зарегистрирован: 02.07.2009 (Чт) 14:59

Re: Access получить все таблицы.

Сообщение plik » 02.07.2009 (Чт) 15:28

Можно так
Код: Выделить всё
...
Public WS As Workspace ' Рабочая область
Public DB As Database ' Объект базы данных

...

Set WS = CreateWorkspace("", "admin", "", dbUseJet)
Set DB = WS.OpenDatabase(DBPath & DBName, False, False, ";PWD=" & DBPass)

...


Set Report = ThisWorkbook.Sheets("Report")

' Цикл по таблицам БД
nR = 3
For Each dbTable In DB.TableDefs
  With dbTable
    If Left$(.Name, 4) <> "MSys" Then
On Error Resume Next
      nR = nR + 1
      Report.Cells(nR, 1) = "Таблица"
      Report.Cells(nR, 2) = .Name
      Report.Cells(nR, 5) = .Properties("Description").Value
      Report.Rows(nR).Font.Bold = True
      For Each dbF In .Fields
        nR = nR + 1
        Col = 0
        Col = Col + 1: Report.Cells(nR, Col) = "Поле"
        Col = Col + 1: Report.Cells(nR, Col) = dbF.Name
        Col = Col + 1: Report.Cells(nR, Col) = .Name & "." & dbF.Name
        Col = Col + 1: Report.Cells(nR, Col) = dbF.Type
        Col = Col + 1: Report.Cells(nR, Col) = dbF.Properties("Description").Value
      Next
On Error GoTo 0
    End If
  End With
Next dbTable

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Access получить все таблицы.

Сообщение alibek » 02.07.2009 (Чт) 15:34

plik, а ты читать пробовал, прежде чем ответить?
Не говоря уж о том, что твой код работать не будет в том виде, в котором он тут приведен.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList