www.ПЕРВЫЕ ШАГИ.ru :: Шаг 44 - Считаем

VBA

Шаг 44 - Считаем

Голос тихий таинственный
Где ты милый единственный
			Алсу.	

Итак, нам нужно связывать Excel и Access. Где находится Excel мы знаем, а вот где файл MDB нужно знать и указывать. Но этих проблем можно избежать, если применить такой ход. Если mdb будет в том же каталоге, что и XLS, то можно создать функцию, которая будет получать этот путь.

44_1.gif (2957 b)

Итак мы её поместим в отдельный модуль для этого его еще нужно создать. А вот код.

Function stDBGetPath() As String
	Dim stTemp As String
	' взять путь нахождения активной книги
	stTemp = ActiveWorkbook.Path
	' прибавить имя базы данных
	stDBGetPath = stTemp + "\" + "curs.mdb"
End Function

Вот теперь можно открывать базу данных используя объекты DAO. Вот код:

Private Sub CommandButton1_Click()
	'---------- объявление переменных ------
	' переменная типа базы данных
	Dim dbAccess As Database
	' переменная типа набор записей
	Dim reRecordSet As Recordset
	' здесь будет SQL запрос
	Dim stSQL As String
	' переменная типа даты
	Dim daDate As Date
 
	' а вдруг ошибка
	On Error GoTo ErrorsDB
 
	' ---------- получаем данные из ячейки
	daDate = Range("DATES").Value
	' ---------- работа с базой ------------
	' откроем базу данных
	Set dbAccess = OpenDatabase(stDBGetPath)
	' Строим SQL запрос
	stSQL = "SELECT * FROM[Curs] WHERE[Поле1] =""" & daDate & """"
	' получаем набор значений
	 Set reRecordSet = dbAccess.OpenRecordset(stSQL)
	' если данные получены тогда занести в ячейку
	If (reRecordSet.RecordCount > 0) Then
		' поместить значение в ячейку
		Range("KURS").Value = reRecordSet!Поле3
	Else
		MsgBox "Not Found"
	End If
 
	' закрываем набор записей
	reRecordSet.Close
	' закрываем базу данных
	dbAccess.Close
	' все в норме конец
	GoTo Ends
	' ошибка где-то однако
ErrorsDB:
	MsgBox "Произошла ошибка"
Ends:
End Sub

Поле с датой в файле Curs.mdb нужно перевести в текстовый формат. Теперь испытания. Введите дату и цену в $ и нажмите кнопку рядом с датой. Если дата есть, то курс поменяется, иначе получите сообщение, что нет данных Not Found. Поменяйте дату и опять нажмите кнопку. Все пересчитается. Вот пример работы:

44_2.gif (7468 b)


Загрузить проект | Предыдущий Шаг | Следующий Шаг
Автор Каев Артем.