Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > значение поля в зависимости от другого поля


Автор: DDX 6.4.2005, 10:45
можно ли сделать так, чтобы в описании таблицы задать условие для поля: его значение должно выбираться из списка, зависимого от другого поля таблицы? то есть так, чтобы юзер выбирал сначала значение одного поля и в зависимости от него - значение другого.

проблема в том, что я использую подчиненную форму в табличном виде, и , если в одной записи список обновляется, то не отображаются значения из прочих записей smile

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

Автор: Akina 6.4.2005, 11:18
Цитата(DDX @ 6.4.2005, 11:45)
в описании таблицы задать условие для поля: его значение должно выбираться из списка, зависимого от другого поля таблицы

нельзя

Цитата(DDX @ 6.4.2005, 11:45)
чтобы юзер выбирал сначала значение одного поля и в зависимости от него - значение другого.

можно

Цитата(DDX @ 6.4.2005, 11:45)
я использую подчиненную форму в табличном виде

такие вещи лучше делать программно в свободной форме

Цитата(DDX @ 6.4.2005, 11:45)
на событие AfterUpdate главного поля повесил код, меняющий RowSource подчиненного, при этом для редактируемой записи всё ок, а вот в остальных значения сохраняются, но не отображаются

а после смены RowSource не забыл сделать Requery?

Автор: DDX 6.4.2005, 11:59
Akina
спасибо за ответ
похоже, я несколько неправильно обрисовал ситуацию.Таблица "Аудитории" связана с таблицей "Здания" по коду здания. Есть табличная форма , в ней есть поле "здание" (поле подстановки из соотв. таблицы) и есть поле аудитория. так вот я хочу, чтобы номер аудитории можно ьыло выбрать лишь из числа тех, которые относятся к уже выбранному зданию. и это я сделал, но для редактируемой записи: выбираешь здание, список аудиторий обновляется. но когда после этого переходишь на одну из вбитых ранее записей, у которых здание другое, номер аудитории исчезает с глаз.

возможно ли это перебороть?..

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

табличный вид предпочтителен, так как есть у этой табличной формы ещё табличная подчиненная

Автор: Akina 6.4.2005, 13:34
да не делай ты подчиненную форму, ё моё... сделай просто на форме листбокс для аудиторий и его рекордсорс меняй при изменении селекта в зданиях.

Автор: DDX 6.4.2005, 13:55
забей про подчиненную форму, это я не к делу ляпнул
она подчинена по другим совсем полям
просто табличная форма, на ней 2 поля: здание и аудитория

как сделать так, чтобы аудиторию можно было выбирать только в зависимости от здания? и при этом на прочие строки это не влияло

Автор: Akina 6.4.2005, 14:16
а какая разница-то?

сделай какую-нить фигню типа

Код

' Draft code
Private Sub BuildingsComboBox_Change()
AuditoriesComboBox.Clear
Tmp = "SELECT * FROM Auditories WHERE BuildingID=" & Str(BuildingsComboBox.Text)
With rs
   .Open Tmp, cn, adOpenStatic, adLockReadOnly, adCmdText
   If .RecordCount > 0 Then
      .MoveFirst
      While Not .EOF
         AuditoriesComboBox.AddItem Trim(!Auditory)
         .MoveNext
      Wend
   End If
   .Close
End With
End Sub

Автор: DDX 12.4.2005, 11:47
Akina
Спасибо
но проблема-то не в том, что аудитории не обновляются, они обновляются отлично, да только во всех записях табличной формы в зависимости от значения здания в текущей, понимаешь smile

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

при активизации-то записи обновить поле не проблема.. мне бы как-нибудь отключить обновление или ещё что-то.. или переводить фокус следом за мышкой..

Автор: Akina 12.4.2005, 12:59
DDX
Ах вон ты о чем? так у тебя неправильно построена подчиненность форм...

Автор: DDX 12.4.2005, 13:58
Akina
ну неееееет там никакой подчиненности *рыдая ))))))
действие происходит в подчиненной форме, но эта форма с успехом могла быть отдельной, она подчинена главной вообще по другим полям. я сказал ,что она подчиненная, чтобы обосновать табличный вид

Автор: Akina 12.4.2005, 16:39
это один из возможных вариантов неправильного построения подчиненности.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)