2016-07-12 2 views
0

Надеюсь, я постараюсь сделать этот вопрос максимально точным и понятным, но вы скажете мне, если я этого не сделаю! Заранее спасибо.Глобальный поиск переменных

Во-первых, небольшой фон и то, что я нашел, что работает, затем на небольшое изменение, которое я не могу заставить работать. Вместо того, чтобы использовать весь код, я использовал фрагменты, которые должны дать достаточно информации для вас, чтобы понять, что я сначала начал вещи правильно.

Я использую систему меню (версия с турбонаддувом оригинальной MS), в которой есть дополнительные поля для хранения информации, необходимой для внесения изменений, в зависимости от того, какую формулировку пользователь хочет использовать, поэтому я могу назвать поле Product, в то время как пользователь может захотеть назвать это «Товары» или «Товары» или «Настроить» или что угодно, что он хочет! Поэтому я сохраняю пользовательские настройки в отдельной таблице (назовем это tblWORDS). Когда меню заполнено (помните, что он работает аналогично стандартным SwitchBoard) с данными из полей: ItemText, Command & Аргумент меню обычно отображает текст из ItemText, который я использую. Но, я добавил новое поле под названием CAPTION в таблице SWITCHBOARD, потому что код VBA не позволяет форматировать ярлыки, как я их хочу. Итак, когда код VBA читает ItemText для метки, из набора записей, и он сталкивается с | (pipe), мой добавленный код VBA затем смотрит в поле Caption для строки. Надеюсь, достаточно фоновой информации !! ?? .

[Switchboard] [Подпись] первоначально содержал следующее: (все включено)
"" & DLookup ("fldProduct", "tblWORDS") & ""

Это работало отлично !! Но ...

Вместо того чтобы выполнять поиск каждый раз, когда мне нужно СЛОВО, я решил создать GLOBAL VARIABLES, поэтому у меня есть глобальная переменная glProduct, которая правильно получает слово из таблицы tblWORDS и сохраняет это просто отлично , Затем это доступно на протяжении всего сеанса.

Я заменил строку выше для чтения глобальной переменной вместо выполнения поиска в каждый раз, чтобы: (опять же, ВСЁ ВКЛЮЧЕНО)
«» & glProduct & «»

Итак, мой код выглядит следующим образом:

While (Not (rs.EOF)) 
    Me("Option" & rs![ItemNumber]).Visible = True 
'MY PIPE DEVIATION 
    If Left(Trim(rs![ItemText] & ""), 1) = "|" Then 
'THIS LINE WORKS JUST FINE 
'DISPLAYS CORRECTLY (rs!Caption = "" & dlookup("fldProduct","tblWORDS") & "") 
     szTemp = DLookup(rs![Caption], "tblWORDS") 
'AS DOES THIS (but, I'm explicitly naming the variable in code! Only entered this line to show that the variable is working!) 
     szTemp = "" & glbProduct & "" 
'THIS DOES TOO (Just a BYREF function for testing) 
     szTemp = fnGetValue(DLookup(rs![Caption], "tblWORDS")) 
     Me("Option" & rs![ItemNumber]).Caption = szTemp 
    Else 
     If rs![ItemNumber] = 0 Then 
      Me("OptionLabel" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & " (" & rs![SwitchboardID] & ")") 
      Me("OptionLabel" & rs![ItemNumber]).Visible = True 
      Me("Option" & rs![ItemNumber]).Visible = False 
     Else 
      Me("Option" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & "") 
     End If 
    End If 
    rs.MoveNext 
Wend 

REVISED К:

While (Not (rs.EOF)) 
    Me("Option" & rs![ItemNumber]).Visible = True 
'MY PIPE DEVIATION 
    If Left(Trim(rs![ItemText] & ""), 1) = "|" Then 
'THIS WORKS (but, I'm explicitly naming the variable in code! Only entered this line to show that the variable is working!) 
     szTemp = "" & glbProduct & "" 
'THIS DOES NOT (FYI: rs!Caption = "" & glbProduct & "") 
     szTemp = rs!Caption 
'NOR DOES THIS (Just a BYREF function for testing) 
     szTemp = fnGetValue(rs!Caption) 
     Me("Option" & rs![ItemNumber]).Caption = szTemp 
    Else 
     If rs![ItemNumber] = 0 Then 
      Me("OptionLabel" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & " (" & rs![SwitchboardID] & ")") 
      Me("OptionLabel" & rs![ItemNumber]).Visible = True 
      Me("Option" & rs![ItemNumber]).Visible = False 
     Else 
      Me("Option" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & "") 
     End If 
    End If 
    rs.MoveNext 
Wend 

Что IS отображается буквальная строка, как указано ("" _glProduct "), а не Продукт, как это было до моего пересмотра!

+0

OK, поэтому я не знаю, как создать читаемый макет для кода - я ввел его с вкладками, интервалом, и все это выглядело отлично, пока оно не было опубликовано !! Почему сайты не могут уважать ваши вкладки, интервал и т. Д.? Я понимаю, что это будет простое изменение, но почему это становится болезненным? – TimesMoney

+0

Привет, Извините, ребята !! Если все остальное не прочитает инструкции, и я все это проведу, и jonhopkins сделал это КРАСИВО. Спасибо за это. Это было то, на что это было похоже, когда я вставил его изначально! – TimesMoney

+0

Нет проблем. У меня были проблемы с ним и в начале. Хитрость составляет 4 пробела перед каждой строкой кода и имеет пустую строку между кодом и любым обычным текстом. Быстрый способ получить пробелы, как отметил Андре, - выбрать код и нажать Ctrl + K или нажать кнопку в верхней части окна ввода, которая выглядит как '{}'. Если вы хотите отдельный абзац, пустая строка между абзацами немного лучше двух пробелов в конце строки. – jonhopkins

ответ

0

Итак, первая проблема заключается в том, что вы сбиваете с толку всех с тем, что вы делаете, и где это происходит - откуда взялась rs! [Caption]?

Вторая проблема заключается в том, что вы не можете получить доступ к глобальным переменным в своих формах или свойствах управления.

Вам необходимо установить подпись через код. Я собираюсь сделать некоторые большие догадки относительно того, что вы используете, и то, что каждый элемент, так что давайте начнем здесь:

Первый
Заменить свойство Caption с чем-то другим - просто «Подпись», например ,

Второй

Добавьте этот код после цикла - Я думаю, что будет работать - трудно действительно знать, потому что вы не покажете, где этот код и когда он работает

[SwitchBoard].Caption = "" & glProduct & "" 
+0

ОК, я ценю обратную связь и создаю свежий db со всем необходимым кодом, но это займет несколько дней, поскольку меня нет, но лучше всего закрыть этот вопрос и начать новый. Как представляется, общий консенсус указывает на то, что я проблема, мне нужно будет попробовать еще раз. Я взял на борт, что он запутан и запутан; без указания того, как и где выполняется код. Я создам крошечный accdb и отправлю его где-нибудь - могу ли я загрузить файлы в SO? Еще раз спасибо за попытку ребята, очень ценим. – TimesMoney

Смежные вопросы