Если цикл, чтобы выбрать, какое значение заполнить в текстовом поле

У меня есть текстовое поле Job в Form2, и у меня есть несколько текстовых полей в Form1.

Допустим, в form1 у меня есть Textbox1, который есть RollFromInventory, Textbox2 есть RollFromMachine1, Texbox3 есть RollFromMachine2 и так далее, предположим, что есть 4 других машины, то есть четыре других текстовых поля.

Когда я хочу заполнить текстовое поле Job в Form2, я хочу написать цикл If, который должен искать текстовое поле, в котором есть значение, заполненное в form1 (будет только одно текстовое поле, которое будет иметь значение среди всех доступных текстовых полей в form1), то есть либо RollFromInventory будет иметь значение, либо RollFromMachine1 будет иметь значение, либо RollFromMachine2..

Я не уверен в логике цикла, поэтому я не могу понять, как это сделать.

В настоящее время код, который я написал, в основном предназначен для заполнения объединенных значений (я не предоставляю этот код, потому что это усложнит задачу).

Я полагаю, код за кнопкой должен быть соответствующим, мне нужна помощь с логикой цикла If.

NewAtSQL 27.05.2019 17:44

и синтаксис (о том, как проверить, имеет ли текстовое поле значение, т.е. я использую не нуль или какой подход рекомендуется).

NewAtSQL 27.05.2019 19:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Самый простой подход может состоять в том, чтобы заполнить Источник управления вашего текстового поля Job в Form2 оператором Switch, подобным следующему:

=Switch(
    [Forms]![Form1]![RollFromInventory] is not null, [Forms]![Form1]![RollFromInventory],
    [Forms]![Form1]![RollFromMachine1]  is not null, [Forms]![Form1]![RollFromMachine1],
    [Forms]![Form1]![RollFromMachine2]  is not null, [Forms]![Form1]![RollFromMachine2],
    [Forms]![Form1]![RollFromMachine3]  is not null, [Forms]![Form1]![RollFromMachine3]
)

Хотя это не особенно красиво и попахивает плохим дизайном интерфейса — похоже, что набор переключателей и одно текстовое поле были бы более подходящими для этого сценария.

Если вы хотите реализовать это в VBA, вы можете использовать набор вложенных операторов If или выражений Nz, например:

Forms![PrinterWaxLabel].JOB = Nz(Nz(InvPW, FHPW), WxPW)

Я сейчас собираюсь уйти с работы. Я попробую это завтра, но я получил общее представление о том, что вы пытаетесь сказать. Не уверен, правильно ли я понимаю опцию переключателя, но я вроде понимаю, что вы имеете в виду. Я тоже попробую. Еще раз спасибо за это предложение, оно очень полезно.

NewAtSQL 27.05.2019 21:18

о, подождите, я поторопился .. на самом деле это не сработало. Это дает мне ошибку

NewAtSQL 28.05.2019 20:14

Это не позволяло мне использовать Switch в vb studio. Понятия не имею почему.

NewAtSQL 28.05.2019 22:14

какая-то синтаксическая ошибка, я уверен, что Switch работает (но я абсолютный новичок в vba и кодировании, поэтому мне трудно правильно понять синтаксис). Я силен только в логике :D

NewAtSQL 28.05.2019 22:19

@NewAtSQL Предоставленный оператор Switch предназначался для использования в Источник управления (как указано в моем ответе), а не в функции VBA. Если вы хотите использовать VBA, я бы предложил использовать либо вложенные операторы If, либо набор вложенных выражений Nz.

Lee Mac 28.05.2019 22:27

Я написал код для достижения того, чего хотел:

If Len(Me.InvPW.Value & "") > 0 Then
Forms![PrinterWaxLabel].JOB = Me.InvPW.Value

Me.JOB.SetFocus

Else

If Len(Me.FHPW & "") > 0 Then

Forms![PrinterWaxLabel].JOB = Me.FHPW.Value

Me.JOB.SetFocus

Else

If Len(Me.WxPW.Value & "") > 0 Then

Forms![PrinterWaxLabel].JOB = Me.WxPW.Value

Me.JOB.SetFocus

End If

End If

End If

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