Страницы: 1
RSS
Vba + MS SQL Server, необходимо создать форму в эксель для работы с базой sql
 
Доброго времени суток!
Возникла необходимость создать форму в эксель для работы с БД на MS SQL Server.
На форме поле для ввода баркода (цифровое значение). При изменении этого поля,его значение должно передаваться в запрос (select поле1,поле2,поле3 from таблица where поле-параметр=баркод-с-формы). Полученные данные должны записываться в эксель.
Совсем не понимаю, как баркод передать в запрос эксель и результаты запроса записать на лист эксель. Подскажите,пожалуйста, как это реализовать.
 
Приложите файл-пример с формой и с кодом, который вы записали макрорекордером для получения данных
Согласие есть продукт при полном непротивлении сторон
 
Цитата
TomSaw написал: как это реализовать.
Так
Код
   On Error Resume Next
    Set Cn = CreateObject("ADODB.Connection")
    sCon = "Provider=SQLOLEDB.1;Data Source=Ваш сервер;" & _
       "Initial Catalog=ваша база;Integrated Security=SSPI;"
    Cn.Open sCon
    баркод = "AAAAAAAAA"
    sSql = "select поле1,поле2,поле3 from таблица where поле2='" & баркод & "'"
    Set rs = CreateObject("ADODB.Recordset")
    Set rs = Cn.Execute(sSql, 3, 1)
    Лист1.Range("A2").CopyFromRecordset rs
    rs.Close:
    Cn.Close
    Set Cn = Nothing
    Set rs = Nothing
 
У меня пока есть только сама форма( Как я понимаю,мне нужно написать обработку события change для поля с баркодом. Признаюсь сразу, я чайник-чайником. Не понимаю как передать значение введенного баркода в запрос sql и как забрать результат запроса в переменные. Подключиться к серверу(создать соединение) я могу,а вот дальше никак.
 
Цитата
Doober написал:  баркод = "AAAAAAAAA"
Я не понимаю немного. Тут переменной присваивается конкретное значение вручную непосредственно в коде?
А как его забрать из формы?

В любом случае, спасибо за помощь,Doober
 
Цитата
TomSaw написал: А как его забрать из формы?
Код
баркод = Me.Barcode.Value   'текст
'или
баркод = Val(Me.Barcode.Value)  'число
Изменено: Sanja - 01.04.2016 20:13:31
Согласие есть продукт при полном непротивлении сторон
 
Sanja,спасибо, попробую так.
 
У меня возник ещё вопрос. Я хочу значение из формы (форма вызывается на листе 1) записать в ячейку на листе 2 по кнопке. Значение из текстового поля.Пытаюсь сделать вот так:

Код
 With Sheets("Лист2")

 .Cells(17, 1) = Me.FIO

 End With

FIO-это тестовое поле формы.
Ругается на неправильное использование Me.  
 
Ме - это ссылка на объект, в модуле которого она используется. Если этот код из модуля листа Лист2, то Me = Sheets("Лист2")
Для обращения к контролу конкретной формы НЕ из ее модуля нужно явно указывать имя формы
Код
Worksheets("Лист2").Cells(17, 1) = ИмяФормы.FIO
Согласие есть продукт при полном непротивлении сторон
 
Sanja,спасибо, разобралась
Страницы: 1
Наверх