MyTetra Share
Делитесь знаниями!
Время создания: 16.03.2019 23:43
Текстовые метки: Excel-Access, Чтение mdb на VBA
Раздел: Разные закладки - VBA - Access - Access->Excel
Запись: xintrea/mytetra_db_adgaver_new/master/base/1514552755da01i7j134/text.html на raw.githubusercontent.com

Option Explicit

'Чтение mdb на VBA

Sub ReadMDB()


'переменная хранящая результат запроса

Dim tbl As Recordset


'строка запроса SQL

Dim SQLr As String


'переменная хранящая ссылку на подключенную БД

Dim dbs As Database


'подключаемся к mdb

Set dbs = DAO.OpenDatabase(ThisWorkbook.Path & "\price.mdb")

'составляем строку SQL запроса

SQLr = "SELECT * FROM tbl_прайс"

'отправляем запрос открытой БД

'результат в виде таблицы сохранен в tbl

Set tbl = dbs.OpenRecordset(SQLr)

'вставляем результат в лист начиная с ячейки A1

Cells(1, 1).CopyFromRecordset tbl

'Закрываем временную таблицу

tbl.Close

'Очищаем память. Если этого не сделать, то таблица

'так и останется висеть в оперативке.

Set tbl = Nothing

'Закрываем базу

dbs.Close

Set dbs = Nothing

End Sub


Sub ReadMDB_построчно()


Dim tbl As Recordset

Dim SQLr As String

Dim dbs As Database

Dim i As Integer


Set dbs = DAO.OpenDatabase(ThisWorkbook.Path & "\price.mdb")

SQLr = "SELECT * FROM tbl_прайс"

Set tbl = dbs.OpenRecordset(SQLr)

i = 1

'выполняем цикл пока не конец tbl

Do While Not tbl.EOF

'присваиваем каждой ячейке значение из полей таблицы

Cells(i, 1) = tbl.Fields("ID")

Cells(i, 2) = tbl.Fields("Вид")

Cells(i, 3) = tbl.Fields("Производитель")

Cells(i, 4) = tbl.Fields("Модель")

Cells(i, 5) = tbl.Fields("Количество")

Cells(i, 6) = tbl.Fields("Цена")

'и получим сумму (цена*кол-во)

Cells(i, 7) = tbl.Fields("Количество") * tbl.Fields("Цена")

i = i + 1

tbl.MoveNext 'переход к следующей записи

Loop

tbl.Close

Set tbl = Nothing

dbs.Close

Set dbs = Nothing

End Sub


Sub ReadMDB_добавить_запись()


Dim tbl As Recordset

Dim SQLr As String

Dim dbs As Database

Dim kol As Long


Set dbs = DAO.OpenDatabase("E:\price.mdb")


Set tbl = dbs.OpenRecordset("tbl_прайс")

'метод RecordCount позволяет получить кол-во записей

'Kol хранит ID для новой записи

kol = tbl.RecordCount + 1


SQLr = "INSERT INTO tbl_прайс (ID,Вид,Производитель, Модель,Количество, Цена)" _

& "Values (" & kol & ",'ОЗУ','Hyndai', 'DDR3', 123, 600)"

dbs.Execute SQLr

tbl.Close

Set tbl = Nothing

dbs.Close

Set dbs = Nothing

End Sub


Прикрепленные файлы:
 
MyTetra Share v.0.65
Яндекс индекс цитирования