Ms Access Обновление связанной формы через поле со списком

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

For each ctrl in me.controls
For i=0 to rs dields.count-1
  If ctrl.name = rs.fields(i).name then
Ctrl.value = rs.fields(i).value
Exit for
Next i 

Next ctrl
Rs.close


Это вроде как работает, но панель навигации (?) со стрелками внизу строки не показывает правильную строку, и я подумал, что должен быть лучший способ сделать это, если бы у меня была строка..

Поэтому я хочу фактически сопоставить идентификатор выбранных комбинаций со строкой в ​​наборе данных и просто передать эту информацию о номере строки (ID) в форму, чтобы все автоматически обновлялось. заранее спасибо

Вы можете удалить внутренний цикл: on error resume next : For each ctrl in me.controls : Ctrl.value = rs(ctrl.name) : Next

Shahram Alemzadeh 18.04.2024 11:54
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Если вы хотите, чтобы полный источник записей оставался там:

Call DoCmd.GoToRecord(acDataForm, Me.Form.Name, acGoTo, Me.myComboBox)

Значение, которое вы выбираете в поле со списком, является значением смещения, к которому вы хотите, чтобы запись перешла.

Чтобы связать это в форме, вы можете добавить запрос ниже в качестве источника записей формы:

SELECT tblTea.Id, tblTea.TeaCD, tblTea.Tea_Name, DCount("[ID]","[tblTea]","[ID]< = " & [ID]) AS row_id
FROM tblTea
ORDER BY tblTea.Id;

Идентификатор строки даст вам номер, представленный в наборе записей. Вот пример данных:

Как видите, я удалил идентификатор 5. Тем не менее, общее количество записей равно 5, но самый высокий идентификатор равен 6.

Это показывает поле со списком со всеми соответствующими данными, основанными на запросе, как описано выше. Первый столбец поля со списком скрыт и содержит значение row_id. Поэтому, если вы выберете идентификатор чая: 6, он перейдет на запись 5 в вашей форме.

Это ресурс комбобокса

SELECT qfrmTea.row_id, qfrmTea.Id FROM qfrmTea ORDER BY qfrmTea.row_id; 

Нет. Я по-прежнему хочу, чтобы источник записей имел, скажем, 35 ​​наборов данных, но «указывал» на конкретный набор данных, который я хотел бы выбрать с помощью поля со списком вместо стрелок внизу.

Kingsley Obeng 17.04.2024 14:05

Если вы понимаете, о чем я?

Kingsley Obeng 17.04.2024 16:24

Привет, Кингсли! Вы пробовали вышеперечисленное? Это должно сработать.

Mathias Z 18.04.2024 08:55

Да, есть... К сожалению, я получаю ошибку 2498, сообщающую, что я использовал неправильный тип данных для одного из параметров. У меня есть me.cboName вместо вашего me.mucombobox. Я также проверил, это определенно строка.

Kingsley Obeng 18.04.2024 09:53

Чего-то не хватает. Нет связи между данными в столбце Имя из cboName и идентификатором связанной таблицы.

Kingsley Obeng 18.04.2024 09:57

Значение, которое вы вставляете в значение me.myCombobox, — это значение, которое вы вставляете в стрелки внизу. Действительно нет связи с идентификатором поля. Поэтому вам следует установить источник записи формы. Допустим, у вас есть 35 записей. Когда вы выбираете номер 10 в myComboBox, набор записей перейдет к записи номер 10, не заботясь об идентификаторе записи. Вы можете добавить номер строки в свой запрос и прикрепить его к списку, таким образом у вас будет правильный номер в наборе записей.

Mathias Z 18.04.2024 10:41

@ Маттиас Х, я просто смотрел остальную часть твоего решения. Значит, поле со списком должно иметь другой источник записей? Я надеялся, что поле со списком, привязанное к форме, также будет работать как обычное поле набора данных. По сути, у пользователя должен быть выбор: использовать стрелки ИЛИ выбрать набор данных связанной таблицы через поле со списком.

Kingsley Obeng 18.04.2024 11:44

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

Mathias Z 18.04.2024 11:50

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