Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Combobox возвращает не тот тип / 6 сообщений из 6, страница 1 из 1
09.01.2019, 10:38
    #39757014
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox возвращает не тот тип
На форме есть комбобокс, метод init формы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT name, id FROM table INTO CURSOR curResult (ID - numeric)

thisform.combo1.RowSourceType = 2 (Alias)
thisform.combo1.RowSource = "curResult"

do case 
   case lcMode = "NEW"

   case lcMode = "EDIT"
      thisform.combo1.value = 1
endcase



Свойства combo1:
Код: sql
1.
2.
   boundColumn = 2
   boundTo = .T.



Если после запуска формы выбрать произвольное значение в combo1, то команда
Код: sql
1.
messagebox(vartype(thisform.combo1.value)) 

вернет "C" для случая с новой записью и "N" для случая редактирования. Почему не "N" в обоих случаях ?
...
Рейтинг: 0 / 0
09.01.2019, 11:37
    #39757059
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox возвращает не тот тип
faustgreenНа форме есть комбобокс, метод init формы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT name, id FROM table INTO CURSOR curResult (ID - numeric)

thisform.combo1.RowSourceType = 2 (Alias)
thisform.combo1.RowSource = "curResult"

do case 
   case lcMode = "NEW"

   case lcMode = "EDIT"
      thisform.combo1.value = 1
endcase



Свойства combo1:
Код: sql
1.
2.
   boundColumn = 2
   boundTo = .T.



Если после запуска формы выбрать произвольное значение в combo1, то команда
Код: sql
1.
messagebox(vartype(thisform.combo1.value)) 

вернет "C" для случая с новой записью и "N" для случая редактирования. Почему не "N" в обоих случаях ?Потому, что никто. похоже, не потревожился об инициализации значением нужного типа в первом случае. В отличие от второго случая.
...
Рейтинг: 0 / 0
09.01.2019, 11:57
    #39757070
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox возвращает не тот тип
Sergey Sizov,
Код: sql
1.
thisform.combo1.value = 0

решило проблему, просто думал, что Fox сам догадается о типе поля исходя из настроек.
...
Рейтинг: 0 / 0
09.01.2019, 14:06
    #39757159
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox возвращает не тот тип
faustgreenSergey Sizov,
Код: sql
1.
thisform.combo1.value = 0

решило проблему, просто думал, что Fox сам догадается о типе поля исходя из настроек.Каких настроек? Вы где-то как-то указали ему числовой тип данных?
...
Рейтинг: 0 / 0
09.01.2019, 21:34
    #39757513
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox возвращает не тот тип
faustgreenпросто думал, что Fox сам догадается о типе поля исходя из настроек.

Для объектов FoxPro тип данных задается или по типу поля, указанному в свойстве Object.ControlSource или, если это свойство не указано, явным образом в свойстве Object.Value. Если ни того, ни другого не указано, то тип данных объекта будет использован по умолчанию.

Для ComboBox тип данных по умолчанию - это символьный тип данных

Для понимания

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

При выборе элемента списка в качестве выбранного значения может быть взято

1. Значение столбца, порядковый номер которого указан в BoundColumn
2. Порядковый номер "строки" в выпадающем списке

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

Свойство BoundTo = .T. говорит о том, что в любом случае следует взять значение столбца. Даже если ComboBox.Value - числового типа

Если взято значение столбца и ComboBox.Value числового типа, то при сохранении выбранного значения произойдет обратная конвертация из символьного типа данных в выпадающем списке в числовой тип

---------------------

Это все к тому, что с ComboBox надо быть осторожным. Результат может оказаться отличным от ожидаемого.
...
Рейтинг: 0 / 0
09.01.2019, 23:01
    #39757545
faustgreen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Combobox возвращает не тот тип
ВладимирМ, спасибо за развернутый ответ. Некоторых вещей не знал:

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

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


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