powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Странное поведение
5 сообщений из 5, страница 1 из 1
Странное поведение
    #33063714
foxwizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi All!
VFP8+SP1.
Суть в следующем:
Делаем запрос к MS SQL 2000

SELECT некие поля ,1.00*0 as test FROM любая таблица where условие
в курсор tmp
выражение 1.00*0 - для получения в результатирующем курсоре пустого
числового поля
( вместо 1.00*0 использовал и cast(0 as numeric(10,2)) - результат тот-же)
Получаем курсор tmp , смотрим струкуру - все нормально ,поле test есть и
даже числовое :-).
Далее приколы:
SELECT tmp
REPLACE test WITH 10
SELECT test FROM tmp WHERE test>0 - результат запроса пустой !
Смотрим курсор - 10 в поле как влитая !
Попытка 2:
SELECT tmp
INDEX ON test TAG test

SELECT test FROM tmp WHERE test>0 - все пучком! Нужный результат!
Даже если после создания индекса
DELETE tag all



--
С уважением,
Андрей Белов.
...
Рейтинг: 0 / 0
Странное поведение
    #33063761
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не потоиу ли, что вплоть до VFP9 запросы игнорируют данные, не сохраненные непосредственно в таблицу (ну и курсор, наверное, тоже), а еще находящиеся в буфере? Если включена буферизация, то после replace надо сделать еще и tableupdate(), и только потом запрашивать.
...
Рейтинг: 0 / 0
Странное поведение
    #33063789
foxwizard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Век живи - век учись!
...
Рейтинг: 0 / 0
Странное поведение
    #33064056
Я думаю, что ничего странного тут нет :) Когда ты делаешь

SELECT некие поля ,1.00*0 as test FROM любая таблица where условие
в курсор tmp

...то курсор у тебя получается только на чтение (READONLY), как и положено в фоксе по умолчанию. Из-за этого

REPLACE test WITH 10

и все прочее не проходят, конечно. Попробуй повторить все это, только в первый SELECT допиши опцию READWRITE. Это сделает курсор tmp обновляемым. Получится так:

SELECT некие поля ,1.00*0 as test FROM любая таблица where условие
в курсор tmp READWRITE
...и далее все как было. Попробуй, попытка - не пытка...

С уважением.
Александр Галенков
...
Рейтинг: 0 / 0
Странное поведение
    #33065661
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Александр!

> ...то курсор у тебя получается только на чтение

Не в случае с удалёнными данными.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Странное поведение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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