powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос с Combobox. Жуткое открытие для моего творчества.
8 сообщений из 8, страница 1 из 1
Вопрос с Combobox. Жуткое открытие для моего творчества.
    #33540512
For Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте Уважаемые коллеги!

Помогите, если кто сталкивался со следующей проблемой.

Объект Combobox, при выборе значения, если поле числовое (поле в БД куда привязан Combo объект), выбирает не значение поля, а index - грубо говоря, порядковый номер строки в combo. В случае, если поле символьное записывает именно значение поля.

Я это узнал, только сегодня, и привязки во всем объектам комбо у меня числовые поля :(. Вы и без меня наверное поняли, как жуткая картина прогнозируется, при дальнейшем использовании такого принципа: Уникальные значения в словарях, как бы не имеют ни какого отношения к выбранным значениям головной базы (где хранятся значения выбранного c Комбо объекта).

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

Пока у меня одна идея: Дело в том, что поля на символьный менять уже вариантов нет, вижу только один выход, к числовым полям делать дупликат в виде символьного поля - привязать к комбо, а в событии Combo.interactivechange написать команду сохранения с символьного в числовое поле c valid-ом. Но недостаток этого варианта куча лишних полей.
Если есть идеи, прошу ответить...
...
Рейтинг: 0 / 0
Вопрос с Combobox. Жуткое открытие для моего творчества.
    #33540557
For Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я как то не понятно объяснил вопрос, спрашивайте я побробую объяснить по подробнее, только не игнорируйте плиз мою беду.
...
Рейтинг: 0 / 0
Вопрос с Combobox. Жуткое открытие для моего творчества.
    #33540587
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме Value, которое, как правило, числовое, есть еще DisplayValue, которое дает то, что видишь в ComboBox.
С уважением, Алексей
...
Рейтинг: 0 / 0
Вопрос с Combobox. Жуткое открытие для моего творчества.
    #33540624
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а еще есть text - доступно только для чтения - там лежит то что отображается в combo после выбора.
...
Рейтинг: 0 / 0
Вопрос с Combobox. Жуткое открытие для моего творчества.
    #33540636
ДП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пропишите у комбобокса св-во BoundTo=.t. и все будет Ок
...
Рейтинг: 0 / 0
Вопрос с Combobox. Жуткое открытие для моего творчества.
    #33540646
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если поле в таблице цифровое и поле в таблице из которой Вы берете значение цифровое - то все 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.
...
Рейтинг: 0 / 0
Вопрос с Combobox. Жуткое открытие для моего творчества.
    #33540755
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) В большинстве случаев, как справедливо указал ДП достаточно сделать настройку

ComboBox.BoundTo = .T.

Эта настройка была введена с версии VFP5

2) В некоторых случаях, комбинация настроек RowSourceType и BoundTo=.T. может давать глюк. Что это за глюк и как бороться смотри здесь.

Не отображается выбранное значение в ComboBox
...
Рейтинг: 0 / 0
Вопрос с Combobox. Жуткое открытие для моего творчества.
    #33540892
For Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в шоке!!!

Уже начал дублировать поля... Но как как лишний раз оказалось все гениальное - просто!!!

Действительно мне нужно было поставить True в:
ComboBox.BoundTo = .T.

Всем огромное спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Еще раз - низкий поклон!

Ну и еще раз не будет лишним - СПАСИБО!!!!!!

Ну и напоследок - ОТ души Человеческое и безразмерное спасибо!!!!!!

По моему я повторяюсь, ну ниче - тем не менее -----
С - П - А - С - И - Б - О

Вы мне сэкономили уйму времени и сил, так что есть время на благодарность.
Кстати я сказал спасибо? Впрочем какая разница - Безгранично благодарен за помощь Всем, кто участвовал в моем спасении, а именно:
Aleksey-K
S866
ДП
Sergey Ch
Особая благодарнось Владимиру Максимову (ВладимирМ) - за не однократное участие в моих проблемах и за личный вклад в мое развитие в области FoxPro!!!!!!!!!!!

Спасибо Всем!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос с Combobox. Жуткое открытие для моего творчества.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]