Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как заставить Vba воспринимать текст как часть кода / 5 сообщений из 5, страница 1 из 1
24.02.2018, 23:21
    #39606861
trexmernii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить Vba воспринимать текст как часть кода
Собственно в переменной есть текст вида
Код: vbnet
1.
t = "rst.Fields(rs![Поле1])" 


В коде до обращения к этой переменной оба рекордсета уже открыты. Необходимо что бы код воспринимал этот текст как код. Например при выводе debug.print писал соответствующее значение, а не текст "rst.Fields(rs![Поле1])".
Заранее спасибо.
...
Рейтинг: 0 / 0
24.02.2018, 23:48
    #39606873
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить Vba воспринимать текст как часть кода
trexmernii,
так получится
Код: vbnet
1.
2.
t = "CurrentDb.OpenRecordset('select * from Таблица1').fields(0)"
Debug.Print Eval(t)


т.е. ваши rst и rs надо "расшифровать" для Eval в функциях и методах , понятных ему
...
Рейтинг: 0 / 0
25.02.2018, 00:19
    #39606880
trexmernii
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить Vba воспринимать текст как часть кода
guest_rusimport,
Спасибо.
А не подскажите ещё. В текстовой переменной идёт через запятую набор искомых значений(не параметров) .
Поиск будет производиться через DAO seek. Как заставить seek воспринимать это тестовое значение ни как один параметр для поиска, а как группу параметров.
Например,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
s = "123, аб, cd"
.....
rs.Index = "NI" 
rs.Seek "=",  s
 ' что бы воспринимал как группу key 
rs.Seek "=", "123, аб, cd"     ' неправильно
rs.Seek "=",  123, "аб", "cd"  ' правильно 
...
Рейтинг: 0 / 0
25.02.2018, 00:38
    #39606884
ScriptControl,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить Vba воспринимать текст как часть кода
Если не отвлекаться на то, что "хотелка" у ТС достаточно странная, и говорит [скорее всего] об ошибках в проектировании БД, то так можна:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub test()
    Dim rs As ADODB.Recordset
    Dim rst As ADODB.Recordset
    Dim oSC As Object ' MSScriptControl.ScriptControl
    Dim t As String
    Dim v
    
    t = "rst.Fields("""" & rs.Fields(""w"") & """")"
    Set rst = CurrentProject.Connection.Execute("select 8 as haba")
    Set rs = CurrentProject.Connection.Execute("select 'haba' as w")
    
    Set oSC = CreateObject("MSScriptControl.ScriptControl")
    oSC.Language = "vbscript"
    oSC.AddObject "rs", rs
    oSC.AddObject "rst", rst
    
    v = oSC.Eval(t)
    Debug.Print v
    
    rs.Close: Set rs = Nothing
    rst.Close: Set rst = Nothing
    
    Set oSC = Nothing
End Sub
...
Рейтинг: 0 / 0
25.02.2018, 11:03
    #39606921
guest_rusimport
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как заставить Vba воспринимать текст как часть кода
trexmerniiguest_rusimport,
Спасибо.
А не подскажите ещё. В текстовой переменной идёт через запятую набор искомых значений(не параметров) .
Поиск будет производиться через DAO seek. Как заставить seek воспринимать это тестовое значение ни как один параметр для поиска, а как группу параметров.
Например,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
s = "123, аб, cd"
.....
rs.Index = "NI" 
rs.Seek "=",  s
 ' что бы воспринимал как группу key 
rs.Seek "=", "123, аб, cd"     ' неправильно
rs.Seek "=",  123, "аб", "cd"  ' правильно 



попробуйте способом, предложенным Уважаемым ScriptControl (у меня, во всяком случае, работает)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    Dim rst As DAO.Recordset
    Dim oSC As Object ' MSScriptControl.ScriptControl
    Dim t As String
    s = """питер"""
    t = "rst.seek """ = """," & s
    Set rst = CurrentDb.OpenRecordset("Таблица1", 1)
    rst.Index = "город"
    Set oSC = CreateObject("MSScriptControl.ScriptControl")
    oSC.Language = "vbscript"
    oSC.AddObject "rst", rst
    
    v = oSC.Eval(t)

    rst.Close: Set rst = Nothing
    
    Set oSC = Nothing


в переменной s перечислите ваши искомые значения (у меня - одно), не забывайте про число кавычек, чтобы не было ошибки синтаксиса
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как заставить Vba воспринимать текст как часть кода / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]