|
Как: combo + значения из нескольких колонок таблицы?
|
|||
---|---|---|---|
#18+
Привет! Вопрос собственно в том, как получать из комбо, в котором таблица, значения из нескольких полей/колонок этой таблицы? Т.е. я сделал основным поле ID и указал на него через BoundCoulmn. Таким образом я могу получить ID через combo.Value, могу ненужное мне наименование позиции получить через combo.DisplayValue. Но мне по ходу нужны еще значения из друг(ой)(их) колон(ки)(ок), котоых не видно и не должно быть видно. В данный момент приходццо привязываццо к наименованию таблицы в комбо и брать значение из нее, т.е. table.Field. Так я сейчас и поступаю, но сия идея мне шибко не нравиццо. Альтернатива мне представляется так: сначала придется в методе combo.Init создать путем combo.AddProperty доп. свойства (если одно - можно заюзать combo.tag), а в методе combo.InteractiveChange опять же через ссылку table.Field эти свойства заполнять. Причем неудобство состоит в том, что в комбо нет свойства RowSourceTable, т.е. по ходу и его желательно создать на ините, чтобы потом через него на таблицу ссылаццо, чтобы в итоге избежать указания прямого именования используемой в комбо таблицы... А как это можно реализовать еще по-другому? вфп90 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2009, 12:22 |
|
Как: combo + значения из нескольких колонок таблицы?
|
|||
---|---|---|---|
#18+
я делаю так (1 поле - id, 2-е - наименование) .RowSource='tablica.tabl_name,tabl_id' .ColumnWidths='350,0' .ColumnLines=.f. .ColumnCount=2 .ColumnLines=.f. .BoundColumn=2 .ControlSource='m.myvar' если полей больше, то делаю .ColumnCount=n и .ColumnLines=.t., а колонку с id помещаю между какими нибудь другими колонками и ширину это колонке даю 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2009, 14:36 |
|
Как: combo + значения из нескольких колонок таблицы?
|
|||
---|---|---|---|
#18+
Сделал свой собственный комбо на основе грида и радуюсь жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2009, 14:41 |
|
Как: combo + значения из нескольких колонок таблицы?
|
|||
---|---|---|---|
#18+
не, Вы не поняли ни разу. Как сделать несколько колонок в комбо и спрятать ту, что с ID - я знаю. Как получить значения остальных колонок, которые есть в таблице, из которой наполняется комбо, но которые в наполнении комбо не участвуют - вот в чем проблема. Ну, к примеру, список клиентов: есть его CustID и наименование CustName. Тут ясно, делаем 2 колонки, в комбо выводим CustName, а Value в комбо будет браться из CustID. А теперь берем еще одну колонку - пользуется ли клиент дисконтом - CustUseDiscount и/или еще что угодно, типа CustGroupID какой-то там группы, значение которой определяет дальнейшее поведение формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2009, 23:01 |
|
Как: combo + значения из нескольких колонок таблицы?
|
|||
---|---|---|---|
#18+
Зачем из Combo-то брать? Идентификатор записи получили, выполняете поиск в таблице по идентификатору и берете любое поле. Не важно, есть оно в Combo или нет. При этом, если источник данных для ComboBox - это таблица или поля таблицы, то факт выбора автоматически устанавливает указатель записи на соответствующую запись. Ну, а если хочется прочитать напрямую из раскрывающегося списка, то содержимое этого списка - это специфический массив, записанный в свойстве с именем List. Обращение к элементам этого массива происходит следующим образом Код: plaintext
Весь вопрос в том, как получить номер (индекс) строки. Повторюсь, если источник данных - это таблица, то подобный поиск не имеет смысла. Хотя, в общем случае, поиск выполняется следующим образом Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Т.е. банальный перебор ВСЕХ элементов, пока не найдем тот, который выбран. Тут следует иметь в виду, что свойство List ну очень специфическое. Т.е. попытка выполнить поиск через ASCAN() - выдаст сообщение об ошибке о том, что List - не массив. Однако можно сразу определить выбранную строку списка через ее идентификатор. Это свойство Combo.ListItemId. Существует метод, который конвертирует значение идентификатора в значение индекса. Тогда определение значение столбца выбранного элемента будет выглядеть так Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2009, 23:51 |
|
Как: combo + значения из нескольких колонок таблицы?
|
|||
---|---|---|---|
#18+
Забыл, что можно сразу индекс выбранного элемента прочитать Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2009, 23:54 |
|
Как: combo + значения из нескольких колонок таблицы?
|
|||
---|---|---|---|
#18+
ага, то есть практически можно задать необходимые столбцы в комбо, задать им ширину 0 чтобы видно не было и таким вот образом получать из них значения? Только одно но - они все будут строкового типа, что несовсем удобно. в любом случае - спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2009, 11:19 |
|
|
start [/forum/topic.php?fid=41&msg=36149414&tid=1586142]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 336ms |
total: | 454ms |
0 / 0 |