Страницы: 1
RSS
VBA данные из MySQL в переменные
 
Есть БД с таблицей

Подключаюсь по коду:
Код
' Собственно, попробовать подключиться к БД:
    Dim oConn As Object
    Set oConn = New ADODB.Connection
    
    oConn.Open "DRIVER={MySQL ODBC 3.51 Driver};" & _
        "SERVER=localhost;" & _
        "DATABASE=pp_cut;" & _
        "UID=root;" & _
        "PASSWORD=;" & _
        "PORT:3306;" & _
        "charset=cp1251;" & _
        "Option=3;"
 'Получение данных из базы данных
    Dim cmd As ADODB.Command  'переменная в которой будет запрос
    Set cmd = New ADODB.Command
    
    Dim rec As ADODB.Recordset 'переменная в которой будет результат запроса
    Set rec = New ADODB.Recordset
    Dim test As String
    Set cmd.ActiveConnection = oConn 'указываем соединение
    cmd.CommandText = "SELECT HDist FROM tools  WHERE IDCUT= 'A1014'" 'собственно, запрос
    cmd.CommandType = adCmdText
        
    Set rec.ActiveConnection = oConn
    rec.Open cmd
    
    oConn.Close
Брал из примера

Собственно, вот в чём вопрос:
У меня порядка 8 столбцов в таблице. По запросу нужно найти строку в столбце IDCUT = некой переменной. Далее из результата (у нас же выходит одна строка) нужно столбцы в переменные записать.
Например переменная test = колонке 'HPrint', test1 = Vsheet

Как это сделать?
 
Если правильно помню, то  
Код
test=rec.fields("HPrint").value
test1=rec.fields("Vsheet").value

или
Код
With rec
test=.fields("HPrint").value
test1=.fields("Vsheet").value
end with


Только не будет у вас этих значений так как
HDist только в Select
да и параменные не знаю что такое :-)
Изменено: БМВ - 19.08.2019 17:36:35
По вопросам из тем форума, личку не читаю.
 
Спасибо огромное.

Вот так работает:
Код
 'Получение данных из базы данных
   Dim cmd As ADODB.Command  'переменная в которой будет запрос
    Set cmd = New ADODB.Command
    
    Dim rec As ADODB.Recordset 'переменная в которой будет результат запроса
    Set rec = New ADODB.Recordset
    Dim test As String
    Set cmd.ActiveConnection = oConn 'указываем соединение из примера выше
    cmd.CommandText = "SELECT * FROM tools  WHERE IDCUT= 'A1014'" 'собственно, запрос
    cmd.CommandType = adCmdText
    cmd.Execute
    rec.Open cmd

    With rec
    test = .Fields("HPrint").Value
    test1 = .Fields("Vsheet").Value
    End With
  • Не подскажите, нужно ли как-то закрывать соединение с БД?
    У меня же к БД будут подключаться и другие пользователи с запросами.
  • И как в запрос вставить переменную? Т.е. вместо A1014 подставить переменную CutTools
 
SELECT * можно конечно, но если полей много, то лучше перечислить нужные  Select HPrint, Vsheet From ….
Цитата
Alex_Dom написал:
нужно ли как-то закрывать соединение с БД?
На то она и БД, чтоб туда имело доступ множество клиентов одновременно.
Закрывать соединение можно только ради экономии памяти приложения клиента и то это просто обнуление объекта.
Параметр передать не сложно просто составить строку
Код
cmd.CommandText = "SELECT * FROM tools  WHERE IDCUT= '" & CutTools & "'" 'собственно, запрос

Апостроф нужен только для текстовых.
Изменено: БМВ - 20.08.2019 10:04:50
По вопросам из тем форума, личку не читаю.
 
Отлично. Спасибо большое.
Осталось сообразить пару страничек на PHP для вывода таблицы и её правки.
Изменено: Alex_Dom - 20.08.2019 10:52:32
Страницы: 1
Наверх