powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / select в Clicke Checkа в Gride
4 сообщений из 4, страница 1 из 1
select в Clicke Checkа в Gride
    #33603320
StasL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть свободная таблица Tabl1 с одним полем filed1(L).
Таблица привязана к Gridу с полем CheckBox.
При клике в поле, хочу определить какое количество записей уже имеют значение .Т.
В Click Checkа прописал
Код: plaintext
1.
SELECT * from Tabl1 WHERE filed1 INTO CURSOR temp
WAIT WINDOW _TALLY
При первом клике на запись получаю - 1 (верно значение только ОДНОЙ записи .T.)
При ВТОРОМ клике на эту же запись опять получаю - 1 (не верно, нет записей со значеним .T.)

А вот так работает нормально:
Код: plaintext
1.
SELECT * from Tabl1 WHERE filed1
WAIT WINDOW _TALLY
Но при этом, естественно, select выдает все на экран.
Подскажите, пожалуйста, что не так делаю? Как сделать правильно?
Зарание блогадарен за помощь.
...
Рейтинг: 0 / 0
select в Clicke Checkа в Gride
    #33603397
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Лучше обрабатывать InteractiveChange в CheckBox
При наступлении этого события у вас CheckBox поменял уже значение, а в таблице оно еще не поменялось, поэтому я делаю:
Код: plaintext
1.
REPLACE filed1 WITH THIS.Value
DOEVENTS FORCE
Учтите, что я не использую буфферизацию (у меня не таблица, а локальный курсор).
2. Результат запроса сохраняйте в массиве:
Код: plaintext
1.
2.
LOCAL ARRAY laDim1[ 1 ]
SELECT COUNT(*) from Tabl1  INTO ARRAY laDim1 WHERE filed1
WAIT WINDOW laDim1[ 1 ] NOWAIT
С уважением, Алексей
...
Рейтинг: 0 / 0
select в Clicke Checkа в Gride
    #33603438
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вопрос момента сброса изменения в таблицу-источник.

Дело в том, что кроме управляемого буфера на запись (разные режимы буферизации), существует еще некий "буфер" на поле таблицы. Сброс из него в собственно таблицу происходит при переходе на другое поле (при потере фокуса, например, вследствии открытия Browse) или при переходе на другую запись.

В принципе, можно заставить сбросить этот буфер принудительно:

Код: plaintext
1.
2.
3.
GO Recno("Table1") IN Table1
SELECT * from Tabl1 WHERE filed1 INTO CURSOR temp
WAIT WINDOW _TALLY

Но лучше всего сделать расчет исключая текущую запись, а потом просто прибавить значение текущей записи

Код: plaintext
1.
2.
SELECT * from Tabl1 WHERE filed1 AND id<>(код текущей записи) INTO CURSOR temp
WAIT WINDOW _TALLY+IIF(filed1, 1 , 0 )
...
Рейтинг: 0 / 0
select в Clicke Checkа в Gride
    #33604053
StasL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aleksey-K2. Результат запроса сохраняйте в массиве:
Код: plaintext
1.
2.
LOCAL ARRAY laDim1[ 1 ]
SELECT COUNT(*) from Tabl1  INTO ARRAY laDim1 WHERE filed1
WAIT WINDOW laDim1[ 1 ] NOWAIT
С уважением, Алексей
Попробовал - результат тот же.

ВладимирМ
Но лучше всего сделать расчет исключая текущую запись, а потом просто прибавить значение текущей записи
Код: plaintext
1.
SELECT * from Tabl1 WHERE filed1 AND id<>(код текущей записи) INTO CURSOR temp
WAIT WINDOW _TALLY+IIF(filed1, 1 , 0 )

А вот так все заработало.
Благодарю всех за помощь.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / select в Clicke Checkа в Gride
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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