Шаг 43 - Готовим форму

Итак, нам необходимо подготовить форму, к которой мы будем обращаться. Конечно это лист Excel. Запустите Excel, создайте файл с именем TestCurs и оставьте на нем один лист. Теперь на этом листе напишем "Цена товара в $" и "Цена товара в РУБ", также отдельно "Курс РУБ за $". Нужна и ячейка "Дата". И дадим имена ячейкам.

Цена в рублях RUB

Цена в $ BAKS

Курс KURS

Дата DATES

Теперь дело за формулами. Идея ясна как белый день. Стоимость руб = Стоимость в $ * курс. Вот это и запрограммируем:

Вводить мы будем цену в долларах, выбирать дату и видеть цену в рублях. Цену в долларах ввести не тяжело:-))). Все остальное посчитается, если будет курс. Курс привязан к дате. То есть мы должны.

Ввести дату

Получить курс

А дальше вводить цену в долларах

Вот теперь надо все подготовить для ввода даты. Надо задать, что это ячейка даты. Выделите её пойдите в "Формат", дальше "Ячейки", потом установите тип ячейки "Дата".

После того как введена дата нужно будет получить курс. Для этого поместим кнопку на лист. Нам нужно в меню "Вид -> Панели инструментов -> Элементы управления" выбрать кнопку и поместить её рядом с датой. Нажимая на неё мы будем получать курс.

Двойной щелчок создаст макрос. Вот и все на этот шаг. Все готово к программированию. Эта книга есть в проекте, если у Вас что-то неполучилось

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

Голос тихий таинственный

Где ты милый единственный

Алсу.

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

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

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. Поменяйте дату и опять нажмите кнопку. Все пересчитается. Вот пример работы:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: