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


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


т.е. ваши rst и rs надо "расшифровать" для Eval в функциях и методах , понятных ему
...
Рейтинг: 0 / 0
Как заставить Vba воспринимать текст как часть кода
    #39606880
trexmernii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Как заставить Vba воспринимать текст как часть кода
    #39606884
ScriptControl,
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если не отвлекаться на то, что "хотелка" у ТС достаточно странная, и говорит [скорее всего] об ошибках в проектировании БД, то так можна:
Код: 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
Как заставить Vba воспринимать текст как часть кода
    #39606921
guest_rusimport
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как заставить Vba воспринимать текст как часть кода
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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