Строка vba как командный текст (строка без кавычек)

У меня есть Sub, у которого есть строка параметров, и я буду включать ее в командный текст. Моя проблема в том, что выполнение не принимает строку (из-за кавычек) в командной строке. Можно ли приравнять текст команды к строке и заставить систему не учитывать кавычки? Спасибо

Public Sub CreatView(ByVal NomeView As String)
NomeView ="View1" 'example

Dim Com As String
Dim Comando As Command
Set Comando = New Command
Com = "StringView_123.Value"
Com = Replace(Com, "123", NomeView)
Comando.CommandText = Com 'Don't work
Comando.CommandText = StringView_View1.Value 'Work fine

Aplicacao.BSO.DSO.BDAPL.Execute (Comando.CommandText)


End Sub
0
0
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это строковые переменные (NomeView, Com):

NomeView ="View1" Com = "StringView_123.Value"

Это строковое свойство (CommandText - текстовое свойство объекта Comando):

Comando.CommandText = Com

StringView_123 выглядит как имя элемента управления (возможно, текстовое поле?) И имеет свойство Value.

Похоже, эти строки нужно изменить:

Com = "StringView_123.Value" Com = Replace(Com, "123", NomeView)

к:

Com = StringView_123.Value Com = Replace(Com, "123", NomeView)

Кавычки вокруг имени и свойства элемента управления означают, что вы работаете со строковым значением ("StringView_123.Value"), а не с именем элемента управления (StringView_123).

Спасибо за ответ. но эта часть в порядке. моя проблема в Aplicacao.BSO.DSO.BDAPL.Execute (Comando.CommandText) Мне нужно, чтобы это был Aplicacao.BSO.DSO.BDAPL.Execute (StringView_View1.Value), чтобы работать, и я просто получаю Aplicacao.BSO.DSO .BDAPL.Execute ("StringView_View1.Value"). Как мне достать цитаты ?! Спасибо вам большое.

CarlaFaria 31.10.2018 12:31

Да, потому что ваш CommandText ссылается на имя элемента управления ("StringView_123.Value"), а не на SQL, который он может выполнить (Replace(StringView_123.Value, "123", NomeView)). Обратите внимание на кавычки (или их отсутствие), когда я имею в виду элемент управления StringView_123)

NeepNeepNeep 31.10.2018 12:35

И снова здравствуйте. Спасибо за ваше время и терпение. Я понимаю, что вы имеете в виду, и согласен с этим. Но моя контрольная "строка ..." - это функция, возвращающая текст. Если я уберу кавычки, у меня возникнут две проблемы: во-первых, имя функции должно быть реальным, что меня в то время не волнует; затем оно делает мое значение Com равным с возвращаемым значением первой функции, чего я тоже не хочу. Потому что я хочу иметь динамическое имя функции и последующее выполнение. Я попробовал CALLBYNAME, CALL или RUN, но, похоже, ни один из них не работает. Я обернулся с делом, где. но я ненавижу это решение. Еще раз спасибо

CarlaFaria 01.11.2018 12:11
Ответ принят как подходящий

Я заменил "commandtext" на CallByName, мой бой был в "значении" (он был плохо позиционирован).

Public Sub CreatView(ByVal NomeView As String)
NomeView ="View1" 'example

Dim Com As String
Com = "StringView_123"
Com = Replace(Com, "123", NomeView)
Aplicacao.BSO.DSO.BDAPL.Execute (CallByName(Me, Com, VbMethod).Value)

End Sub

Другие вопросы по теме