Как сделать в форме список с зависимой сортировкой?

Автор querten, 29 мая 2011, 22:55

0 Пользователи и 1 гость просматривают эту тему.

RFJ


querten

Еще вопросы:

1. Как в форме табличные элементы превратить в списки? Ведь функция замены в этом случае недоступна, а мне нужны именно списки.
2. Как выбранные данные записать в таблице БД? Поскольку такая сортировка нужна для ввода данных. 

RFJ

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

[вложение удалено Администратором]

Bobby_M3

Подскажите пожалуйста, а как эти данные из зависимых списков использовать потом для внесения в таблицу?
Данные из тех выпадающих списков, которые не зависимые - они вносятся без проблем. Но вот данные из тех выпадающих списков, список значений в которых зависит от показаний предыдущего списка - значения из него не вносятся в таблицу из этой формы.
В настройках на вкладке "Данные" в свойствах списка все сделано по общему принципу, как и во всей форме - но почему-то не работает - может нужно в макросе что-то прописать, чтобы зависимые показания не только выводились в списке, но и их можно было бы использовать для введения в таблицу, на основе которой сделана форма?
Подскажите пожалуйста.

Код выглядит следующим образом - из примеров, что были приведены выше:

'Эту часть я назначил на саму форму при ее запуске
Sub Main1
Main12
End Sub
'Эту часть назначил на выпадающий список №1, после которого следует уже зависимый список.
Sub Main12
Dim MainForm1 As Object
    MainForm1 = ThisCOMPONENT.DrawPage.Forms.GetByIndex(0)
  Lst1 = MainForm1.getByName("fmtГород")
Lst2 = MainForm1.getByName("fmtКод дилера")
  iSecItem = Lst1.SelectedItems(0)
  sString = Lst1.StringItemList(iSecItem)
Lst2.ListSource = Array("SELECT ""Дилер"",""Город"" FROM ""Дилеры"" WHERE ""Город"" = "&"'"& sString &"'"&"")
Lst2.refresh()
End Sub

'На зависимый список соответственно ничего не назначал, так же как и в вышеприведенном примере.



Bobby_M3

Решение неожиданно найдено. Может кому поможет:
Sub Main12
Dim MainForm1 As Object
    MainForm1 = ThisCOMPONENT.DrawPage.Forms.GetByIndex(0)
  Lst1 = MainForm1.getByName("fmtГород")
Lst2 = MainForm1.getByName("fmtКод дилера")
  iSecItem = Lst1.SelectedItems(0)
  sString = Lst1.StringItemList(iSecItem)
Lst2.ListSource = Array("SELECT ""Дилер"",""Код дилера",""Город"" FROM ""Дилеры"" WHERE ""Город"" = "&"'"& sString &"'"&"")
Lst2.refresh()
End Sub

Добавил в выборку поле "Код дилера", так как оно используется для внесения данных в таблицу, на базе которых была сделана эта форма.
Грубо говоря - мы сделали так, что таблица начала понимать вносимые в нее данные.