Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / странная ситуаций с переменной / 15 сообщений из 15, страница 1 из 1
08.10.2012, 09:39
    #37987525
labirint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
Добрый день, друзья!

голову сломал :о(( помогите пожалуйста

На форме 2 Комбобокса. Источник данных во 2-м формируется в зависимости от того, что выбрано в первом. Для этого во 2-м Комбо я использовал метод ProgrammaticChange. Вот он:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
this.rowsource = ''

tcv = thisform.combo1.value

	SELECT accnmbr, accid from accounts WHERE brocid = tcv INTO CURSOR acc
	MESSAGEBOX('tcv = '+STR(tcv))

WITH this
	.rowsource = 'acc'
	.listindex = 1
	.displaycount = .listcount
	*.requery
endwith

При попытке кликнуть на 2-й Комбо, Фокс выдает ошибку - "Переменная TCV не найдена"
Куда девается переменная? Что можно сделать? (П.С. простите, если вопрос глупый)
П.П.С. строка с выводом сообщения - для отладки, реально она не нужна.
...
Рейтинг: 0 / 0
08.10.2012, 09:49
    #37987533
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
labirint,

Да потому что при клике метод ProgrammaticChange не срабатывает.
Лучше этот код помести в метод Click() combo1.
...
Рейтинг: 0 / 0
08.10.2012, 09:50
    #37987536
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
С соответствующей доработкой, конечно.
...
Рейтинг: 0 / 0
08.10.2012, 10:19
    #37987594
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
Посмотри сначала где именно ошибка происходит. Скорее всего вообще не тут.
...
Рейтинг: 0 / 0
08.10.2012, 10:31
    #37987619
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
labirintWITH this
.rowsource = 'acc'
.rowsourcetype = 2
.listindex = 1
.displaycount = .listcount
*.requery
endwith
Эта настройка не помешает, если ее нет.
...
Рейтинг: 0 / 0
09.10.2012, 00:07
    #37989225
labirint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
Jonny540labirint,

Да потому что при клике метод ProgrammaticChange не срабатывает.
Лучше этот код помести в метод Click() combo1.

Прошу простить "недописку" - метод ProgrammaticChange вызывается из события Combo1.InteractiveChange , т.е. в процессе выбора в Комбо 1.
...
Рейтинг: 0 / 0
09.10.2012, 00:09
    #37989227
labirint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
Jonny540labirintWITH this
.rowsource = 'acc'
.rowsourcetype = 2
.listindex = 1
.displaycount = .listcount
*.requery
endwith
Эта настройка не помешает, если ее нет.

Спасибо.
Настройка задана через окно Properties, она есть.
...
Рейтинг: 0 / 0
09.10.2012, 00:11
    #37989232
labirint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
Dima TПосмотри сначала где именно ошибка происходит. Скорее всего вообще не тут.

Не знаю - как посмотреть, в дебаггер ничего не выводит :о((
Да и переменная эта - локальная и появляется только в этом методе.

Как еще можно отследить место происхождения ошибки?
...
Рейтинг: 0 / 0
09.10.2012, 00:36
    #37989246
labirint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
Dima TПосмотри сначала где именно ошибка происходит. Скорее всего вообще не тут.

в запросе, в выражении
Код: sql
1.
WHERE brocid = tcv


поле brocid - типа Интегер, а переменная тип Намерик.
Может ли ошибка возникать из-за этого несоответствия типов?
...
Рейтинг: 0 / 0
09.10.2012, 15:39
    #37990278
labirint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
Dima TПосмотри сначала где именно ошибка происходит. Скорее всего вообще не тут.

Вместо переменной объявил свойство формы с именем tcv и его же поставил в запрос -
Код: sql
1.
Where brocid = thisfrom.tcv


фокс ругается именно на это место, свойство формы тоже не находит :о((
Как так может быть: в этом методе объявляется переменная или "даже" свойство формы и фокс ее не видит:! :о((
...
Рейтинг: 0 / 0
09.10.2012, 16:06
    #37990322
Jonny540
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
labirint,

Вот так сделай:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
tcv = this.value

  SELECT fio, kod from spr_pers WHERE kod = VAL(tcv) INTO CURSOR acc

WITH thisform.combo2
	.rowsource = 'acc'
	.listindex = 1
	.displaycount = .listcount
endwith


Все работает.
...
Рейтинг: 0 / 0
09.10.2012, 19:20
    #37990582
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
labirintDima TПосмотри сначала где именно ошибка происходит. Скорее всего вообще не тут.

Не знаю - как посмотреть, в дебаггер ничего не выводит :о((
сообщение об ошибке вышло - нажми Suspend - запустится дебагер и покажет строку с ошибкой.

labirintДа и переменная эта - локальная и появляется только в этом методе.
есть огромное подозрение что не только в этом

labirintКак еще можно отследить место происхождения ошибки?
Поищи "tcv" по всему коду формы (Ctrl+F)
...
Рейтинг: 0 / 0
10.10.2012, 00:26
    #37990875
labirint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
Jonny540labirint,

Вот так сделай:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
tcv = this.value

  SELECT fio, kod from spr_pers WHERE kod = VAL(tcv) INTO CURSOR acc

WITH thisform.combo2
	.rowsource = 'acc'
	.listindex = 1
	.displaycount = .listcount
endwith


Все работает.

Оказалось нечто интересное :о((
Я в запрос написал
Код: sql
1.
WHERE kod = brc.brocid

т.е. - ключевое поле курсора, из которого берет данные Комбо1 - и все стало нормально работать.
Решение нашел. Не знаю - радоваться ли?
А вот почему не работал код с переменной и со свойством формы?
П.С. использовать функцию VAL(tcv) посчитал бесполезным, поскольку переменная сразу получала значение типа Numeric.
...
Рейтинг: 0 / 0
10.10.2012, 05:10
    #37990994
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
labirintА вот почему не работал код с переменной и со свойством формы?вот почему:
labirintВместо переменной объявил свойство формы с именем tcv и его же поставил в запрос -
Код: sql
1.
Where brocid = thisfrom.tcv
...
Рейтинг: 0 / 0
10.10.2012, 16:50
    #37992131
labirint
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
странная ситуаций с переменной
tanglirlabirintА вот почему не работал код с переменной и со свойством формы?вот почему:
labirintВместо переменной объявил свойство формы с именем tcv и его же поставил в запрос -
Код: sql
1.
Where brocid = thisfrom.tcv



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


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