Как перебирать строки непрерывной формы в Microsoft access и вставлять значение в несвязанное текстовое поле с помощью vba?

#sql #vba #ms-access

Вопрос:

У меня есть непрерывная форма таблицы базы данных access, которая доступна для редактирования. Я добавил столбец в форму (не таблицу базы данных access) и вставил в этот столбец несвязанное текстовое поле без значения. Когда форма загружена, она запускает VBA, которая запрашивает онлайн-базу данных, выполняет некоторые вычисления и хотела бы вставить эти вычисления в это несвязанное текстовое поле в отношении этого значения строк.

введите описание изображения здесь

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

Я не хочу объединять таблицы, так как это делает форму недоступной для редактирования. Я также сделал dlookup, он работает, но это делает форму чрезвычайно медленной.

Я также пробовал использовать столбцы spacesaver, такие как

 select '' as column1, '' as column2 from table;
 

и использовал набор записей vba для редактирования этих значений, но эти столбцы экономии места недоступны для редактирования в качестве выражения. Когда я это сделал

 rs.Edit
rs.fields("column1") = "something"
rs.Update
 

vba ломается, когда я это делаю, так как столбец, который я пытаюсь отредактировать, является выражением и не доступен для редактирования.

Комментарии:

1. Либо сохраните вычисленное значение в поле таблицы, либо вызовите функцию с аргументом для данных field2 из несвязанного текстового поля. Вы успешно использовали DLookup, и VBA может оказаться не быстрее. Код должен быть размещен в виде отформатированного текста, а не изображения. Также предпочтительнее предоставлять данные в виде текстовой таблицы вместо изображения.

Ответ №1:

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

Попробуйте просто

 Me.MyUnboundTextboxName = "SomeValue"
 

Вы увидите SomeValue , как они появляются в каждой строке.