Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение таблицы с помощью combobox / 25 сообщений из 29, страница 1 из 2
20.04.2016, 19:52
    #39220599
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
Подскажите, есть таблица 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
20.04.2016, 20:18
    #39220627
Заполнение таблицы с помощью combobox
starsooНо таблица просто не реагирует на изменение значений в комбо, она всегда остается пустой, в чем проблема?Разумеется. Ибо свой выбор в комбо для отбора не использутется и в грид тянется вся таблица.

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

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

А как тогда реализовать данную задачу?Хм, наверное, предварительно подумав, не так ли?
Кстати, отладчиком не смотрел свой код?
...
Рейтинг: 0 / 0
21.04.2016, 00:38
    #39220732
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
В общем пробую вставить таким макаром через кнопку
Код: 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
21.04.2016, 14:04
    #39221234
Заполнение таблицы с помощью combobox
starsoo,
похоже, вы понимаете действие команд совсем не так, как они работают на самом деле...
Единственное использование комбобокса видно только в процитированных ниже кусках кода:
Код: sql
1.
IF thisform.combo1.value ='univ.prof  '


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


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

Может таки начнем с самого начала? Ибо объяснить сколько и каких ошибок понаделано в этой куче кода нет ни сил, ни времени.
...
Рейтинг: 0 / 0
05.05.2016, 19:32
    #39230308
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
Хорошо, сейчас попробую все подробно описать
...
Рейтинг: 0 / 0
05.05.2016, 19:39
    #39230311
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
У меня 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
05.05.2016, 19:51
    #39230320
Заполнение таблицы с помощью combobox
1. Давай договоримся о терминологии.
Ты ничего не выбираешь из таблиц. Это делает фокс. В соответствии с командами в коде. Ты пишешь код, но действия с данными выполняет фокс. Ок?
2. Опять торопишься и валишь все в кучу не разобравшись.
Где расположен указанный код? В каком методе какого элемента? Почему он расположен именно там?
Зачем нужен массив?

Таблицы можешь выложить?
...
Рейтинг: 0 / 0
05.05.2016, 20:15
    #39230332
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
Код на кнопке команды, массивы нужны для заполнения грида
Вот табилцы
...
Рейтинг: 0 / 0
05.05.2016, 20:16
    #39230333
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
И еще 1
...
Рейтинг: 0 / 0
05.05.2016, 20:16
    #39230334
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
Код на кнопке(событие click)
...
Рейтинг: 0 / 0
05.05.2016, 22:31
    #39230402
Заполнение таблицы с помощью combobox
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
05.05.2016, 22:43
    #39230405
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
Вроде все заполняет, спасибо большое! Только вот проценты он неверно считает
...
Рейтинг: 0 / 0
05.05.2016, 22:48
    #39230407
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
И еще, мне нужно чтобы в комбо были более полные названия профилей, допусти не ИТ, а тот же инж-тех
...
Рейтинг: 0 / 0
05.05.2016, 22:58
    #39230411
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
С расширенным наименованием разобрался, осталось понять почему неправильно подсчитывает проценты
...
Рейтинг: 0 / 0
05.05.2016, 23:01
    #39230412
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
А, все, скобок то на сумму не было)
...
Рейтинг: 0 / 0
05.05.2016, 23:13
    #39230416
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
Подскажите, как мне отобразить только те вузы в каждой профиле, которые имеют наименьший процент преподавателей?
...
Рейтинг: 0 / 0
05.05.2016, 23:17
    #39230418
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
Первых 20 вузов, которые имеют наименьший процент*
...
Рейтинг: 0 / 0
06.05.2016, 00:06
    #39230434
starsoo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заполнение таблицы с помощью combobox
Код: 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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Заполнение таблицы с помощью combobox / 25 сообщений из 29, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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