Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Передача значения переменной в условие WHERE в запросе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Передача значения переменной в условие WHERE в запросе (Макросы/Sub)
Передача значения переменной в условие WHERE в запросе
alexban65 Дата: Понедельник, 10.09.2018, 00:57 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Приветствую уважаемых форумчан!

Пытаюсь передать значение переменной в WHERE в запросе
[vba]
Код

Private Sub CommandButton1_Click()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cntrl As String
Dim cl As String

cl = ComboBox2
cntrl = "UserForm." & UserForm.ActiveControl.Name & ".Text"
MsgBox cntrl
MsgBox cl

cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\TMP\Project.mdb; Jet OLEDB:Database;"
cn.Open ConnectionString
'rs.Open "SELECT * FROM Itog WHERE id1='" & cl & "' AND id1 IS NOT NULL ORDER BY 1", cn, adOpenDynamic, adLockBatchOptimistic
rs.Open "SELECT * FROM Itog WHERE id1 like '" & cntrl & "' AND id1 IS NOT NULL ORDER BY 1", cn, adOpenDynamic, adLockBatchOptimistic

ActiveSheet.Range("B8").CopyFromRecordset rs

rs.Close
cn.Close
End Sub
[/vba]

Строка работает
[vba]
Код

rs.Open "SELECT * FROM Itog WHERE id1='" & cl & "' AND id1 IS NOT NULL ORDER BY 1", cn, adOpenDynamic, adLockBatchOptimistic
[/vba]

Эта строка не работает
[vba]
Код

rs.Open "SELECT * FROM Itog WHERE id1 like '" & cntrl & "' AND id1 IS NOT NULL ORDER BY 1", cn, adOpenDynamic, adLockBatchOptimistic
[/vba]

Как все же правильно передать значение переменной в запрос?


Сообщение отредактировал alexban65 - Понедельник, 10.09.2018, 01:01
 
Ответить
СообщениеПриветствую уважаемых форумчан!

Пытаюсь передать значение переменной в WHERE в запросе
[vba]
Код

Private Sub CommandButton1_Click()

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim cntrl As String
Dim cl As String

cl = ComboBox2
cntrl = "UserForm." & UserForm.ActiveControl.Name & ".Text"
MsgBox cntrl
MsgBox cl

cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\TMP\Project.mdb; Jet OLEDB:Database;"
cn.Open ConnectionString
'rs.Open "SELECT * FROM Itog WHERE id1='" & cl & "' AND id1 IS NOT NULL ORDER BY 1", cn, adOpenDynamic, adLockBatchOptimistic
rs.Open "SELECT * FROM Itog WHERE id1 like '" & cntrl & "' AND id1 IS NOT NULL ORDER BY 1", cn, adOpenDynamic, adLockBatchOptimistic

ActiveSheet.Range("B8").CopyFromRecordset rs

rs.Close
cn.Close
End Sub
[/vba]

Строка работает
[vba]
Код

rs.Open "SELECT * FROM Itog WHERE id1='" & cl & "' AND id1 IS NOT NULL ORDER BY 1", cn, adOpenDynamic, adLockBatchOptimistic
[/vba]

Эта строка не работает
[vba]
Код

rs.Open "SELECT * FROM Itog WHERE id1 like '" & cntrl & "' AND id1 IS NOT NULL ORDER BY 1", cn, adOpenDynamic, adLockBatchOptimistic
[/vba]

Как все же правильно передать значение переменной в запрос?

Автор - alexban65
Дата добавления - 10.09.2018 в 00:57
krosav4ig Дата: Понедельник, 10.09.2018, 01:27 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
cntrl = "UserForm." & UserForm.ActiveControl.Name & ".Text"

А, собственно, чего вы этим пытаетесь добиться?


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
cntrl = "UserForm." & UserForm.ActiveControl.Name & ".Text"

А, собственно, чего вы этим пытаетесь добиться?

Автор - krosav4ig
Дата добавления - 10.09.2018 в 01:27
alexban65 Дата: Понедельник, 10.09.2018, 01:47 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
krosav4ig,

Передать значение UserForm.ActiveControl.Name в условие WHERE...
То есть должно вернуться что то вроде Combox2.Text - и значение Combox2.Text положить в WHERE
Но чувствую что эта конструкция нежизнеспособна...)
Не хватает в этом моменте знания и понимания...((


Сообщение отредактировал alexban65 - Понедельник, 10.09.2018, 01:50
 
Ответить
Сообщениеkrosav4ig,

Передать значение UserForm.ActiveControl.Name в условие WHERE...
То есть должно вернуться что то вроде Combox2.Text - и значение Combox2.Text положить в WHERE
Но чувствую что эта конструкция нежизнеспособна...)
Не хватает в этом моменте знания и понимания...((

Автор - alexban65
Дата добавления - 10.09.2018 в 01:47
boa Дата: Понедельник, 10.09.2018, 09:31 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 549
Репутация: 167 ±
Замечаний: 0% ±

365
alexban65,
Во-первых ActiveControl в момент нажатия на CommandButton1 будет CommandButton1, поэтому ни какого значения Combox2.Text вы не получите
а рабочий синтаксис будет примерно такой
[vba]
Код
cntrl = Me.Controls(Me.ActiveControl.Name).Caption
[/vba]

Трудно что-то большее сказать без файла-примера.




Сообщение отредактировал boa - Понедельник, 10.09.2018, 09:32
 
Ответить
Сообщениеalexban65,
Во-первых ActiveControl в момент нажатия на CommandButton1 будет CommandButton1, поэтому ни какого значения Combox2.Text вы не получите
а рабочий синтаксис будет примерно такой
[vba]
Код
cntrl = Me.Controls(Me.ActiveControl.Name).Caption
[/vba]

Трудно что-то большее сказать без файла-примера.

Автор - boa
Дата добавления - 10.09.2018 в 09:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Передача значения переменной в условие WHERE в запросе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!