2014-10-09 2 views
1

Я новичок в Microsoft Access. Это структура, у меня есть:Форма доступа показывает поля другой таблицы выбранного элемента списка combobox

Таблица Suppliers с полями Name, Address, Zip, PhoneNumber
Таблица Purchases с полями Supplier, Address, Zip, PhoneNumber (и некоторых других несущественных из них)

Supplier поле таблица Purchases должна содержать ссылку на запись в таблице Suppliers.

Теперь я делаю форму, чтобы пользователь мог ввести Purchases записей. У него есть combobox, чтобы выбрать Supplier и некоторые текстовые поля для Address, Zip, PhoneNumber. Я хочу, чтобы, когда пользователь выбирает Supplier, значения для Address, Zip, PhoneNumber будут скопированы из выбранного Supplier в соответствующие текстовые поля в форме.

Как достичь этого результата с помощью кода Visual Basic?

+0

Я предполагаю, что эта форма для не ДОБАВЛЕНИЯ записей (нет модов к существующим данным?) –

+0

Да, для добавления записей только –

ответ

3

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

Одним из простейших способов является предоставление данных, доступных в источнике записей вашего выпадающего списка поставщиков. Они НЕ должны быть видимыми, вы можете установить ширину столбца на 0, чтобы скрыть их. Давайте представим, что ваш RecordSource является:

SELECT Suppliers.[Name], Suppliers.Address, Suppliers.Zip, Suppliers.PhoneNumber from Suppliers 

Теперь в выпадающем списке AfterUpdate случае мы копируем данные.

Private Sub SupplierCombo_AfterUpdate() 
    If IsNull(Me.SupplierCombo) Then 
    Me.txtAddress=Null 
    Me.txtZip=Null 
    Me.txtPhoneNumber=Null 
    Else 
    Me.txtAddress=me.SupplierCombo.Column(1) 
    Me.txtZip=me.SupplierCombo.Column(2) 
    Me.txtPhoneNumber=me.SupplierCombo.Column(3) 
    End If 

End Sub 

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

Надежда, что помогает

+1

Спасибо, работал отлично. Но почему существует нулевая проверка? –

+1

Нулевая проверка выполняется, когда пользователь очищает выпадающее поле. Вы не захотите оставлять «старые» данные в текстовых окнах. – TheSmileyCoder

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