Значения поля со списком автоматически обновляются - PullRequest
0 голосов
/ 30 марта 2010

надеюсь, кто-нибудь может помочь

Структура таблицы следующая:

tblCompany:   
compID
compName

tblOffice:  
offID,
compID,   
add1, add2, add3 etc...

tblEmployee:   
empID
Name, telNo, etc...   
offID

У меня есть форма, которая содержит контактную информацию для сотрудников, все работает нормально, используя после обновления. Каскадное поле со списком, cmbComp, позволяет мне выбрать компанию, а inturn выбрать соответствующий офис, cboOff, и корректно обновляет соответствующее поле tblEmployee.offID. Поля автоматически обновляются и для адреса

cmbComp: RowSource

SELECT DISTINCT tblOffice.compID, tblCompany.compID 
FROM tblCompany 
INNER JOIN AdjusterCompanyOffice 
ON tblCompany.compID=tblOffice.compID 
ORDER BY tblCompany.compName; 

cboOff: RowSource

SELECT tblCompany.offID, tblCompany.Address1, 
tblCompany.Address2, tblCompany.Address3, tblCompany.Address4, 
tblCompany.Address5 
FROM tblCompany 
ORDER BY tblCompany.Address1; 

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

Поле со списком cboOff загружается правильно, поскольку источником управления для этого является offID

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

Любая помощь / точка в правильном направлении приветствуется, я искал способ сделать это, но не могу добраться куда-либо!

-edit

Я попытался добавить следующее для управления текстовым полем

=[Forms]![frmAdjPersonalDetails]![cboAdjOff].[Column](2)

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

Private Sub cmbComp_AfterUpdate()
Me.cboOff.RowSource = "SELECT ID, Address1, Address2, Address3, Address4, Address5        FROM" & _
 " tblOffice WHERE CompID = " & Me.cmbComp & _
" ORDER BY Address1"
 Me.cboAdjOff = Me.cboAdjOff.ItemData(0)
Me.txtAdd2 = Me.cboOff.Column(2)
Me.txtAdd3 = Me.cboOff.Column(3)
Me.txtAdd4 = Me.cboOff.Column(4)
Me.txtAdd5 = Me.cboOff.Column(5)
End Sub

Не уверен, что делать?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2010

1001 * попробовать *

источник строки в поле со списком =

"SELECT DISTINCT table.field FROM table;"

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

0 голосов
/ 30 марта 2010

Если я вас правильно понимаю, вы ищете утверждение "Requery". Это «обновит» данные в вашем поле со списком или форме. Вы можете поставить

 Me.Requery 

В соответствующем обработчике событий. Вероятно, "AfterUpdate", если я правильно помню.

...