powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как будет быстрее/грамотнее combo.value или dbf.field
12 сообщений из 12, страница 1 из 1
Как будет быстрее/грамотнее combo.value или dbf.field
    #33909975
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Есть на форме комбо, он берет значение из поля таблицы (name, 2-е поле/столбец в таблице). Меж тем у комбюка стоит BoundColumn = 1, а это, если я правильно понимаю, означает что в его value будут попадать данные из 1 столбца/поля его таблицы, а там поле Code. Собственно именно значение Code мне и необходимо.

Вопрос в том, что лучше использовать для INSERT/UPDATE/LOCATE и тд/тп -
thisform.combo1.value (если только туда не попадает значение RECNO(), а именно значение из поля Code)
или же напрямую брать из базы - Alias.code, ведь указатель в базе перемещается соотв. комбо.

Сенксь
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33910002
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Указатель записи в таблице НЕ перемещается в соответствии с перемещениями в Combo.

Вообще, это вопрос 5 минут экспериментов. Сделайте таблицу источник для Combo у которой значения поля Code будут идти не по порядку и это будут достаточно большие значения, например: 53, 21, 64, 12, 98

Посмотрите, что у Вас получится.
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33910171
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Провел експеримент :)
Установил, что combo.value возвращает RECNO() его базы независимо от BoundColumn. Так же установил, что указатель записи в его базе таки ПЕРЕМЕЩАЕТСЯ соотв. выбору в комбо и всегда получается RECNO() = combo1.value, что устанавливал таким кодом на Valid от комбо:
Код: plaintext
1.
2.
MESSAGEBOX(curJudges.code)
MESSAGEBOX(thisform.comboJudges.Value)
MESSAGEBOX(recno())

таким образом все значения выбираемые в комбо, привязанном на базу, лучше всего брать из той базы. Собственно другого и не дано. Разве еще рисовать текстбокс и в него вставлять что нужно по валиду комбо.
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33910234
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не забывайте просвойство BoundTo- которое определяет что возвращать - номер по порядку или значение поля определенное в BoundColumn
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33910243
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KOПровел експеримент :)
Установил, что combo.value возвращает RECNO() его базы независимо от BoundColumn.
А теперь пометь несколько записей как удаленные и установи настройку

SET DELETED ON

чтобы подобные записи не учитывались

Далее почитай HELP по опции BoundTo.

Поэкспериментируй, что будет возвращаться при Combo.BoundTo = .F./.T.

CTAC-KO Так же установил, что указатель записи в его базе таки ПЕРЕМЕЩАЕТСЯ соотв. выбору в комбо и всегда получается RECNO() = combo1.value, что устанавливал таким кодом на Valid от комбо:

Код: plaintext
1.
2.
MESSAGEBOX(curJudges.code)
MESSAGEBOX(thisform.comboJudges.Value)
MESSAGEBOX(recno())


Теперь положи на форму кнопку и перенеси весь этот код в событие Click() этой кнопки с небольшим изменением:

Код: plaintext
1.
2.
3.
4.
GO TOP IN curJudges  && вот это добавь
MESSAGEBOX(curJudges.code)
MESSAGEBOX(thisform.comboJudges.Value)
MESSAGEBOX(recno())

CTAC-KOтаким образом все значения выбираемые в комбо, привязанном на базу, лучше всего брать из той базы.
"А мужики-то и не знают"
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33910778
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таким образом на все это у меня ушел 1 день, вместо 5ти минут...

и выходит что лучше использовать значение combo1.value при обязательных BoundTo = .T. и BoundColumn = 1 ???
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33910841
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
елки-палки

я ужо запутался совсем... дык че теперь делать? при удаленных записях и SET DELE ON ваще творицца - не поймешь что...
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33910866
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KOТаким образом на все это у меня ушел 1 день, вместо 5ти минут...
"Лучше день потерять, зато потом за 5 минут долететь" (с)

С чужих слов запоминается хуже, чем выстраданное на собственном опыте. Тем более, все-равно возникает масса "уточняющих" вопросов.

CTAC-KOи выходит что лучше использовать значение combo1.value при обязательных BoundTo = .T. и BoundColumn = 1 ???
"Слушай сюда, птичка" (с)

Что лучше использовать, зависит от конкретной задачи и личных предпочтений программиста.

У Вас есть инструмент. У этого инструмента есть свои возможности и особенности работы. Подходит ли данный инструмент вот с такими настройками для решения конкретной задачи - решать Вам.
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33910894
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KOелки-палки

я ужо запутался совсем... дык че теперь делать? при удаленных записях и SET DELE ON ваще творицца - не поймешь что...
Ну, понять-то можно, а вот использовать...

В том числе и по этой причине, лично я уже давно отказался от использования в качестве источника данных для раскрывающегося списка полей таблицы напрямую

Я делаю опосредованное использование. Сначала делаю выборку, а потом использую результат этой выборки для наполнения раскрывающегося списка. Варианты решения смотри здесь

Не отображается выбранное значение в ComboBox
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33911002
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да само собой - решать мне.

Только гляньте на вопрос - я спросил как будет грамотнее и быстрее работать.

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

Но только реального ответа я так и не получил...

Да и вообще, Вас, Ерохиных, не поймешь - жена говорит хорошо, ты говоришь плохо (с)
Вы пытаетесь показать, что выбор в комбо не совпадает с позицией в его базе, его value при удаленных записях - ваще номер записей, конкретно попавших в список комбо... А решение-то какое ??? Брать текстовое значение поля .name, которое будет и в combo.DisplayValue и, при опред. настройках в combo.Value и по нему код искать? Это ж не решение... Делать multicolumn - тоже. У меня уже назревает вопрос - а нафиг ваще такой комбо? он же тока все портит, особенно при удаленных записях и SET DELE ON, как оно у меня и есть.

Вот -=AlexiS=- подсказал насчет BoundTo. Все так, но при условии multicolumn-combo. у меня же - одна колонка. Соотв. значениями свойств BoundTo и BoundColumn я ничего не добьюсь. кроме того зачем юзверю лицезреть код? этого не нужно. Выходит что наилучшим средством является присвоение значения кода в дополнительный текстбокс. Тогда всякие чехления по базе, на кторой комбо, не повлияют на результат. Но вопрос в том, что или как в текстбокс присваивать, если в базе комбо перемещения не происходит?
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33911131
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, ОК!

Пока сам постил ответ Вы уже и ответили по сути вопроса...

Спасибо!
...
Рейтинг: 0 / 0
Как будет быстрее/грамотнее combo.value или dbf.field
    #33911528
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
короче - чтобы долго не мучаться
BountTo = .t.
BoundColumn=2

Далее 2 варианта
либо
RowSourceType = 3
RowSource=Select name,code from table into cursor ttt

либо
RowSourceType = 6
RowSource=table.name,code

ColumnCount=2
ColumnWidth=100,0

И будет вам счастие ...
юзер видит только наме а коде выбирает

Да чтобы не тратить столько времени на элементарщину - купите книгу и почитайте (не издеваюсь - советую)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как будет быстрее/грамотнее combo.value или dbf.field
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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