powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение таблицы с помощью combobox
25 сообщений из 29, страница 1 из 2
Заполнение таблицы с помощью combobox
    #39220599
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, есть таблица vuzkart с полями z1-наименования универов и prof-профили вузов(их 4)
Есть форма с комбобоксом и гридом. Нужно допустим заполнить 1 колонку грида наименованиями универов, которые соотвествуют выбранному профилю в комбобоксе. Т.е я сначала заполняю комбо профилями, и после выбора какого-то профиля , в гриде должны появится все универы соответствующие данному профилю
Комбо я заполняю так
В процедуре focus комбо пишу
Код: sql
1.
2.
3.
4.
select distinct prof from vuzkart into cursor vibor_prof
thisform.combo1.RowSource="vibor_prof.prof"
thisform.combo1.RowSourceType = 6   
thisform.combo1.style= 2


Он мне выводит 4 профиля в комбо
ПОсле я также в процедуру фокус записываю
t
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
hisform.grid1.RecordSource=''
select z1, prof from vuzkart into cursor univ
IF thisform.combo1.value ='univ.prof  '
WITH thisform.grid1   			
  			.recordsource = 'univ' 
  			.Column1.controlsource = 'univ.z1'  		
  			.Column2.Sparse = .f.  
  			.Column2.Bound = .t.  
ENDWITH
endif


Но таблица просто не реагирует на изменение значений в комбо, она всегда остается пустой, в чем проблема?
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39220627
starsooНо таблица просто не реагирует на изменение значений в комбо, она всегда остается пустой, в чем проблема?Разумеется. Ибо свой выбор в комбо для отбора не использутется и в грид тянется вся таблица.

ps: как обычно, куча совершенно бесполезного кода...
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39220629
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильный проходящий.,

А как тогда реализовать данную задачу?
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39220679
starsooправильный проходящий.,

А как тогда реализовать данную задачу?Хм, наверное, предварительно подумав, не так ли?
Кстати, отладчиком не смотрел свой код?
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39220732
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем пробую вставить таким макаром через кнопку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
*****ÄËß Èíæ-òåõà
thisform.grid1.RecordSource=''
DIMENSION A(300)
DIMENSION B(300)
DIMENSION A1(300)
DIMENSION B1(300)
DIMENSION A4(300)
DIMENSION B4(300)
DIMENSION A3(300)
DIMENSION B3(300)
IF thisform.combo1.DisplayValue='Èíæ-òåõ'
SELECT vuzkart.z1, vuzkart.prof, vuzstat.PPS, vuzstat.DN, vuzstat.KN;
FROM vuzstat,vuzkart;
WHERE (vuzstat.codvuz=vuzkart.codvuz) AND (vuzkart.prof='ÈÒ');
INTO cursor cgr
FOR i = 1 TO recCOUNT() 
GO i
B(i)=cgr.z1
A(i)=(cgr.DN+cgr.KN)/cgr.PPS
?B(i)
?A(i)
?i
ENDFOR
create CURSOR t1 (Z2 C(200), proc1 F(20))
FOR i = 1 TO 44 
INSERT INTO t1 (Z2,proc1) VALUES (B(i),A(i))
ENDFOR
&&CREATE CURSOR t2 (Z1 C(200), proc1 N(20))
&&SELECT TOP 20 * from t1 order by proc1 
ENDIF
thisform.grid1.RecordSource="t1"


Он всю информацию выводит в обычное окно фокспро, но в сам grid ничего не записывает
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39221234
starsoo,
похоже, вы понимаете действие команд совсем не так, как они работают на самом деле...
Единственное использование комбобокса видно только в процитированных ниже кусках кода:
Код: sql
1.
IF thisform.combo1.value ='univ.prof  '


Код: sql
1.
IF thisform.combo1.DisplayValue='Èíæ-òåõ'


А теперь расскажите как вы понимаете их работу, а мы попробуем вам разъяснить в чем вы ошиблись.
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230249
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Display value-значение которое видно пользователю в комбо
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230256
starsooDisplay value-значение которое видно пользователю в комбоИ что вы мне этим хотели сообщить? Думаете, я не знаю назначение этого свойства?
Вас просили вроде не про свойства писать, а ваше понимание вашего же кода. Вот как вы понимаете хотя бы процитированные строки? Когда эти условия будут проверяться?
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230261
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если значение в комбо будет инж-тех, то я должен вставить в мой грид все университеты, где в поле prof указано ИТ
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230263
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всего таких универов( с полем prof=ИТ 45), но он вставляет в грид только 41 и почему-то поле proc1 заполнено 0 и 1
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230278
starsooЕсли значение в комбо будет инж-тех, то я должен вставить в мой грид все университеты, где в поле prof указано ИТ1. В грид невозможно в принципе ничего вставить. Напрочь. Данные можно вставить в курсор/таблицу и показать в гирде и никак иначе.
2. Ты можешь начать разбирать свой код не весь сразу, а построчно? Ты понимаешь что делает каждая строка твоего кода? Почему они стоят именно в такой последовательности?

Может таки начнем с самого начала? Ибо объяснить сколько и каких ошибок понаделано в этой куче кода нет ни сил, ни времени.
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230308
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, сейчас попробую все подробно описать
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230311
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня 2 таблицы, vuzkart(отсюда мне нужно взять поля z1-наименования универов и prof-направление каждого универа(их 4)) и vuzstat(из этой таблицы я высчитываю процент преподавателей с учеными степенями среди всех преподавателей). Теперь по коду:
у меня есть грид, комбо и кнопка
*****Инж тех
thisform.grid1.RecordSource=''
DIMENSION A(300)
DIMENSION B(300)
DIMENSION A1(300)
DIMENSION B1(300)
DIMENSION A4(300)
DIMENSION B4(300)
DIMENSION A3(300)
DIMENSION B3(300)
IF thisform.combo1.DisplayValue=Инж-тех'
SELECT vuzkart.z1, vuzkart.prof, vuzstat.PPS, vuzstat.DN, vuzstat.KN;
FROM vuzstat,vuzkart;
WHERE (vuzstat.codvuz=vuzkart.codvuz) AND (vuzkart.prof='ИТ');
INTO cursor cgr
FOR i = 1 TO 45
B(i)=cgr.z1
A(i)=(cgr.DN+cgr.KN)/cgr.PPS
ENDFOR
create CURSOR t1 (Z2 C(200), proc1 F(20))
FOR i = 1 TO 45
INSERT INTO t1 (Z2,proc1) VALUES (B(i),A(i))
ENDFOR
Соответственно, если в поле комбо у меня стоит инж тех, я выбираю из таблицы только те универы, у которых в поле prof указано=ИТ и делаю это все в цикле для подсчета процента
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230320
1. Давай договоримся о терминологии.
Ты ничего не выбираешь из таблиц. Это делает фокс. В соответствии с командами в коде. Ты пишешь код, но действия с данными выполняет фокс. Ок?
2. Опять торопишься и валишь все в кучу не разобравшись.
Где расположен указанный код? В каком методе какого элемента? Почему он расположен именно там?
Зачем нужен массив?

Таблицы можешь выложить?
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230332
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код на кнопке команды, массивы нужны для заполнения грида
Вот табилцы
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230333
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще 1
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230334
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код на кнопке(событие click)
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230402
starsoo,
значится так :)
Массивы не нужны.
Цикл перебирает только элементы массива, не трогая записи в выборке и все результаты получались одинаковыми ибо считались под оной и той же записи. В топку.
Даже если оставить массивы, то вставлять из них данные можно и без цикла. Туда же.
Короче, от твоего кода остается только вот это:
Код: sql
1.
2.
3.
4.
5.
thisform.grid1.RecordSource=''
Select z1, DN+KN/PPS as proc1 from vuzstat,vuzkart ;
WHERE (vuzstat.codvuz=vuzkart.codvuz) AND (vuzkart.prof='ИТ');
into cursor t1
thisform.grid1.RecordSource='t1'
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230405
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде все заполняет, спасибо большое! Только вот проценты он неверно считает
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230407
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще, мне нужно чтобы в комбо были более полные названия профилей, допусти не ИТ, а тот же инж-тех
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230411
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С расширенным наименованием разобрался, осталось понять почему неправильно подсчитывает проценты
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230412
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, все, скобок то на сумму не было)
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230416
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, как мне отобразить только те вузы в каждой профиле, которые имеют наименьший процент преподавателей?
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230418
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первых 20 вузов, которые имеют наименьший процент*
...
Рейтинг: 0 / 0
Заполнение таблицы с помощью combobox
    #39230434
starsoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
thisform.grid1.RecordSource=''
IF thisform.combo1.DisplayValue='Инж-тех'
Select z1, (DN+KN)/PPS as proc1   from vuzstat,vuzkart ;
WHERE (vuzstat.codvuz=vuzkart.codvuz) AND (vuzkart.prof='ИТ');
into cursor t1
SELECT TOP 20 *  from t1 ORDER BY proc1  into table t2


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


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