Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2010, 18:13   #1
Syn-McJ
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 11
По умолчанию Передача данных из Access в Excel

Задание следующее: реализовать доступ к базе данных через форму в Excel с помощью технологий DAO и ADO.
Содержание формы: поле ввода пути к базе данных, список имен таблиц в базе, список имен полей в таблице, кнопка приема данных из выбранного поля.
Действие: пользователь выбирает нужное поле в нужной таблице нужной базы данных и выводит содержимое этого поля на лист Excel.

С DAO я успешно справился, код следующий:
Код:
Dim DB As Database
Dim Tabl As TableDef
Dim Pole As Field
Dim i As Integer
Dim Zap As Recordset

Private Sub CB1_Click()
CD1.Filter = "Базы данных (.mdb)|*mdb"
CD1.ShowOpen
TB1.Text = CD1.Filename
Set DB = OpenDatabase(TB1.Text)
For Each Tabl In DB.TableDefs
LB1.AddItem Tabl.Name
Next
End Sub

Private Sub lb1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
For Each Pole In DB.TableDefs(LB1.Text).Fields
LB2.AddItem Pole.Name
Next
End Sub

Private Sub LB2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Set Zap = DB.OpenRecordset(LB1.Text, dbOpenTable)
i = 1
While Not Zap.EOF
Cells(i, 1) = Zap(LB2.Text)
i = i + 1
Zap.MoveNext
Wend
End Sub
С ADO дошел до определенного момента и застрял (в используемой методичке, к сожалению, не всё понятно):
Код:
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Dim pl As ADOX.Column
Dim rst As ADODB.Recordset
Dim i As Integer


Private Sub CB1_Click()
CD1.Filter = "Базы данных (.mdb)|*mdb"
CD1.ShowOpen
TB1.Text = CD1.Filename

Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & CStr(TB1.Text)
For Each tbl In cat.Tables
LB1.AddItem tbl.Name
Next

End Sub

Private Sub lb1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
For Each pl In cat.Tables(LB1.Text).Columns
LB2.AddItem pl.Name
Next
End Sub

Private Sub LB2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

End Sub
Таким образом, нужно реализовать последнюю функцию - вывод записей из выбранного поля на лист. Помогите, кто чем может, пожалуйста)
Syn-McJ вне форума Ответить с цитированием
Старый 08.10.2010, 10:30   #2
Syn-McJ
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 11
По умолчанию

Вопрос решен.

Последний раз редактировалось Syn-McJ; 08.10.2010 в 11:08.
Syn-McJ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача параметра из Excel в Access GES Microsoft Office Excel 1 11.06.2010 12:19
Передача данных в Excel 7astronavt7 Общие вопросы C/C++ 0 21.12.2009 10:51
Передача данных из одного файла Access в другой. wstil БД в Delphi 2 26.05.2009 23:23
Передача данных Access Word (пояснение) Dryuks Microsoft Office Access 1 28.01.2008 06:06