Блог переехал на egregors.com
Egregors
суббота, 21 февраля 2015 г.
среда, 1 мая 2013 г.
Подключение к MySQL Базе Данных из vba-приложения. Экспорт данных из Excel в MySQL
Для того что бы получить доступ к MySQL из VBA нам понадобится не так уж много:
Set oConn = New ADODB.Connection
oConn.Open "DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"DATABASE=testdb;" & _
"UID=root;" & _
"PASSWORD=;" & _
"PORT:3306;" & _
"charset=cp1251;" & _
"Option=3;"
If oConn.State = adStateOpen Then
MsgBox "Connected! =)"
Else
MsgBox "Сan not connect... =("
End If
Первый парметр указывает на резмещение сервер. Там может быть IP-адрес, или домен,
дальше — конкретная база данных,
имя пользователя,
пароль,
порт (по умолчанию 3306),
указание кодировки excel, для того, что бы при попытки записать в utf-8 базу данных кириллицу не получились кракозябры,
последний параметр — без понятия о чем %)
Ниже пару примеров работы с базой данных.
Dim cmd As ADODB.Command 'переменная в которой будет запрос
Set cmd = New ADODB.Command
Dim rec As ADODB.Recordset 'переменная в которой будет результат запроса
Set rec = New ADODB.Recordset
Set cmd.ActiveConnection = oConn 'указываем соединение из примера выше
cmd.CommandText = "select * from user" 'собственно, запрос
cmd.CommandType = adCmdText
cmd.Execute
Set rec.ActiveConnection = oConn
rec.Open cmd
Debug.Print (rec.Fields("login").Value)
Dim lg As String
Dim ps As String
Dim fn As String
lg = "pupkin"
ps = "qwerty"
fn = "Вася Пупкин"
cmd.CommandText = "INSERT INTO user (login, password, full_name) VALUES ('" & lg & "', '" & ps & "', '" & fn & "')"
cmd.Execute
- В References... vba-проекта добавить библиотеку Microsoft ActiveX Data Objects 6.1 Library
- Скачать и установить подходящей для вашей версии операционной системы ODBC драйвер. Скорее всего подойдет MySQL ODBC 3.51 Driver. Скачать этот драйвер можно с сайта MySQL: http://dev.mysql.com/downloads/connector/odbc/3.51.html#downloads
- Собственно, попробовать подключиться к БД:
Set oConn = New ADODB.Connection
oConn.Open "DRIVER={MySQL ODBC 3.51 Driver};" & _
"SERVER=localhost;" & _
"DATABASE=testdb;" & _
"UID=root;" & _
"PASSWORD=;" & _
"PORT:3306;" & _
"charset=cp1251;" & _
"Option=3;"
If oConn.State = adStateOpen Then
MsgBox "Connected! =)"
Else
MsgBox "Сan not connect... =("
End If
Первый парметр указывает на резмещение сервер. Там может быть IP-адрес, или домен,
дальше — конкретная база данных,
имя пользователя,
пароль,
порт (по умолчанию 3306),
указание кодировки excel, для того, что бы при попытки записать в utf-8 базу данных кириллицу не получились кракозябры,
последний параметр — без понятия о чем %)
Ниже пару примеров работы с базой данных.
Получение данных из базы данных:
Set cmd = New ADODB.Command
Dim rec As ADODB.Recordset 'переменная в которой будет результат запроса
Set rec = New ADODB.Recordset
Set cmd.ActiveConnection = oConn 'указываем соединение из примера выше
cmd.CommandText = "select * from user" 'собственно, запрос
cmd.CommandType = adCmdText
cmd.Execute
Set rec.ActiveConnection = oConn
rec.Open cmd
Debug.Print (rec.Fields("login").Value)
Отправка данных в базу данных:
Dim ps As String
Dim fn As String
lg = "pupkin"
ps = "qwerty"
fn = "Вася Пупкин"
cmd.CommandText = "INSERT INTO user (login, password, full_name) VALUES ('" & lg & "', '" & ps & "', '" & fn & "')"
cmd.Execute
понедельник, 18 марта 2013 г.
Бывает, Excel страшно лагает
И часто случается, что виной тому огромное количество скрытых шелов на странице.
Благо, есть простой макрос, который поможет решить эту проблему:
Благо, есть простой макрос, который поможет решить эту проблему:
Sub DeleteAllTextBox()
Dim oSh As Shape
For Each oSh In ActiveSheet.Shapes
oSh.Delete
Next oSh
End Sub
Нашелся здесь: http://baguzin.ru/wp/?p=743
понедельник, 24 сентября 2012 г.
Почему ускорение свободного падения не зависит от массы?
— Все очень просто, сынок
Согласно Закону всемирного тяготения, сила гравитации между двумя телами рассчитывается из выведенной Ньютоном в 1666 году формулы:
где G — гравитационная постоянная, m — масса тела, а R — расстояние между телами.
В конкретном случае с Землей, эта формула принимает вид:
где M — масса Земли, m — масса падающего на Землю тела, а R — радиус земли. Из этого закона следует, что чем больше масса падающего тела m, тем больше сила F. Очевидно, чем большей массой обладает тело, тем большую силу гравитации оно порождает.
— Как же так, пап, ведь масса не должна иметь значение?
— Верно, сынок. Мы просто забыли о существовании Второго закона Ньютона:
Согласно этому закону, ускорение тела зависит от его массы m и от силы F, которая была к нему приложена. Их этого следует, что чем больше масса тела, тем большую силу нужно приложить, что бы ускорить оное. Очевидно, что для того, что бы сдвинуть с места более массивный свинцовый шар, нужно приложить бо́льную силу.
Действительно, если приравнять две этих формулы, мы получим, что массы m сократятся, и останется:
Из этого и получается, что следствия Закона тяготения и Второго закона Ньютона компенсируют друг друга. Поэтому ускорение свободного падения не зависит от массы, сынок.
— Здо́рово!
Подписаться на:
Сообщения (Atom)