|
|
|
Вопрос с Combobox. Жуткое открытие для моего творчества.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте Уважаемые коллеги! Помогите, если кто сталкивался со следующей проблемой. Объект Combobox, при выборе значения, если поле числовое (поле в БД куда привязан Combo объект), выбирает не значение поля, а index - грубо говоря, порядковый номер строки в combo. В случае, если поле символьное записывает именно значение поля. Я это узнал, только сегодня, и привязки во всем объектам комбо у меня числовые поля :(. Вы и без меня наверное поняли, как жуткая картина прогнозируется, при дальнейшем использовании такого принципа: Уникальные значения в словарях, как бы не имеют ни какого отношения к выбранным значениям головной базы (где хранятся значения выбранного c Комбо объекта). Прошу, учитывая массовость повторения этой грубейшей ошибки у меня в проге, посодействовать мне - безболезненно и без тяжких последствий выйти из положения. Пока у меня одна идея: Дело в том, что поля на символьный менять уже вариантов нет, вижу только один выход, к числовым полям делать дупликат в виде символьного поля - привязать к комбо, а в событии Combo.interactivechange написать команду сохранения с символьного в числовое поле c valid-ом. Но недостаток этого варианта куча лишних полей. Если есть идеи, прошу ответить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 12:35 |
|
||
|
Вопрос с Combobox. Жуткое открытие для моего творчества.
|
|||
|---|---|---|---|
|
#18+
Если я как то не понятно объяснил вопрос, спрашивайте я побробую объяснить по подробнее, только не игнорируйте плиз мою беду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 12:50 |
|
||
|
Вопрос с Combobox. Жуткое открытие для моего творчества.
|
|||
|---|---|---|---|
|
#18+
Кроме Value, которое, как правило, числовое, есть еще DisplayValue, которое дает то, что видишь в ComboBox. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 12:57 |
|
||
|
Вопрос с Combobox. Жуткое открытие для моего творчества.
|
|||
|---|---|---|---|
|
#18+
а еще есть text - доступно только для чтения - там лежит то что отображается в combo после выбора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 13:05 |
|
||
|
Вопрос с Combobox. Жуткое открытие для моего творчества.
|
|||
|---|---|---|---|
|
#18+
Пропишите у комбобокса св-во BoundTo=.t. и все будет Ок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 13:09 |
|
||
|
Вопрос с Combobox. Жуткое открытие для моего творчества.
|
|||
|---|---|---|---|
|
#18+
Если поле в таблице цифровое и поле в таблице из которой Вы берете значение цифровое - то все OK. Решение есть: http://support.microsoft.com/kb/q139214/ How to Store Numeric Values that Come from a Combo Box This article was previously published under Q139214 SUMMARY When the ControlSource property of a combo box or list box evaluates to a numeric variable and the list box displays numeric data, the ControlSource stores the index number (position) in the list, not the data that is displayed. This article shows by example how to store the numeric value listed in a combo box in a numeric variable. Back to the top MORE INFORMATION The RowSource property of a combo box or list box specifies the source of the values; that is, it indicates where the data is coming from. The ControlSource property of a combo box specifies the data that is modified when a selection is made. It indicates where the data is going to. When a combo box is bound to a character variable, the expression displayed in the list is stored to the ControlSource. When the object is bound to a numeric variable, the index order of the expression is stored to the ControlSource. For example, say the list displays the following elements: ------ | 10 | | 20 | | 30 | | 40 | ------ If the number 30 is selected when the data is bound to a numeric variable, the variable stored in the ControlSource property will evaluate to 3, because 30 is the third element in the list. If the data originates from a table, this index can correspond to a record number. When a combo box or a list box is not bound to any data, ControlSource is empty. The Value property stores the character string that is currently selected. Using the previous example, the Value property is equal to 30 if the list box is not bound to data. The Visual FoxPro Help file indicates that once the ControlSource property is set to a field or variable, the Value property always has the same data value and the same data type as the variable or field to which the ControlSource property is set. To store the numeric selection of a combo box to a numeric variable, you can assign the value of the combo box to the variable in the Interactive Change event handler. This assumes that the object is not bound to data. The following step-by-step example illustrates this procedure. Back to the top Step-by-Step Example 1. Create a new form. 2. Right-click the form, and then click Data Environment. 3. In the Data Environment, open the Orders table located in the Samples\Data directory. 4. Select the form, and place a combo box on the form. 5. Change the following properties for the combo box: RowSourceType: 2-Alias RowSource : Orders.order_amt && Numeric field Do not assign a ControlSource to the combo box. 6. Create a new property for the form, and name it nSelectData. 7. In the InteractiveChange event handler for Combo1, type: THISFORM.nSelectData=VAL(THIS.Value) 8. Save and run the form. To verify the value of the nSelectData variable, open the Debug window and type <Form>.nSelectData, where <Form> is the name of the form. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 13:11 |
|
||
|
Вопрос с Combobox. Жуткое открытие для моего творчества.
|
|||
|---|---|---|---|
|
#18+
1) В большинстве случаев, как справедливо указал ДП достаточно сделать настройку ComboBox.BoundTo = .T. Эта настройка была введена с версии VFP5 2) В некоторых случаях, комбинация настроек RowSourceType и BoundTo=.T. может давать глюк. Что это за глюк и как бороться смотри здесь. Не отображается выбранное значение в ComboBox ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 13:36 |
|
||
|
Вопрос с Combobox. Жуткое открытие для моего творчества.
|
|||
|---|---|---|---|
|
#18+
Я в шоке!!! Уже начал дублировать поля... Но как как лишний раз оказалось все гениальное - просто!!! Действительно мне нужно было поставить True в: ComboBox.BoundTo = .T. Всем огромное спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Еще раз - низкий поклон! Ну и еще раз не будет лишним - СПАСИБО!!!!!! Ну и напоследок - ОТ души Человеческое и безразмерное спасибо!!!!!! По моему я повторяюсь, ну ниче - тем не менее ----- С - П - А - С - И - Б - О Вы мне сэкономили уйму времени и сил, так что есть время на благодарность. Кстати я сказал спасибо? Впрочем какая разница - Безгранично благодарен за помощь Всем, кто участвовал в моем спасении, а именно: Aleksey-K S866 ДП Sergey Ch Особая благодарнось Владимиру Максимову (ВладимирМ) - за не однократное участие в моих проблемах и за личный вклад в мое развитие в области FoxPro!!!!!!!!!!! Спасибо Всем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 14:04 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33540587&tid=1592374]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
162ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 467ms |

| 0 / 0 |
