:: Visual Foxpro, Foxpro for DOS
CURSOR not null
Lemonade Jo
Автор
Всем опять привет! Наладил я уже почти было свою формочку с курсором, даже индексацию проводил как хочу, НО вот новая напасть У меня одно поле получилось типа С(240) и еще в добавок с .NULL. и я его никак не могу проиндексировать. Как же тут быть?(COPY TO... а потом USE... делать всеже не хочется)
Ratings: 0 negative/0 positive
Re: CURSOR not null
Lemonade Jo
Автор
Добавлю что курсор получается коммандой SELECT ... INTO CURSOR cur1 READWRITE
Ratings: 0 negative/0 positive
Re: CURSOR not null
Вячеслав Клепинин

Сообщений: 1597
Откуда: Санкт-Петербург
Дата регистрации: 26.03.2004
Можно использовать NVL:

SELECT ..., NVL(MyField,'') AS MyField INTO CURSOR cur1 READWRITE

т.е. вместо NULL будет подставляться пустая строка.



Отредактировано (04.04.05 13:31)


------------------
Ratings: 0 negative/0 positive
Re: CURSOR not null
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Тогда уж SELECT ..., NVL(MyField,SPACE(240)) AS MyField INTO CURSOR cur1 READWRITE, а то порежет данные.




------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: CURSOR not null
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Оч. интересно

Дает ошибку.

CREATE CURSOR test (cID c (240) null)
INDEX ON cID TAG cID

Работает

CREATE CURSOR test (cID c (239) null)
INDEX ON cID TAG cID


CREATE CURSOR test (cID c (240) NOT null)
INDEX ON cID TAG cID

Всё проходит нормально

Вывод: при допустимости NULL значений 240 символов не индексируются.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: CURSOR not null
Вячеслав Клепинин

Сообщений: 1597
Откуда: Санкт-Петербург
Дата регистрации: 26.03.2004
to AlexM

Hi!

Тогда лучше PADR...

SELECT ..., PADR(NVL(MyField,''),240) AS MyField INTO CURSOR cur1 READWRITE
Ratings: 0 negative/0 positive
Re: CURSOR not null
Lemonade Jo
Автор
Да беда та в том что у меня .NULL. в принципе разрешен по полю Я когда скопировал результат в таблицу то понял что в том то и дело (когда в конструкторе таблици убрал NULL - то индексация получилась). Как бы мне сразу получить такой курсор в котором значение NULL само по себе запрещенно (у меня в том поле NULL не бывает - всегда какое либо содержание есть)
Ratings: 0 negative/0 positive
Re: CURSOR not null
Lemonade Jo
Автор
Вот вот!Если длинна строки меньше 240, то все катит...
Ratings: 0 negative/0 positive
Re: CURSOR not null
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Ну тебе ребята уже написали вылизанный вариант.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: CURSOR not null
Lemonade Jo
Автор
Стою на асфальте в лыжи обутый...
Нет у меня в курсоре ни одной записи где по этому полю есть значение .NULL.!Я это проверял и перепроверял. Уважаемый PaulWist вы же были правы когда сказали:

Работает

CREATE CURSOR test (cID c (239) null)
INDEX ON cID TAG cID

CREATE CURSOR test (cID c (240) NOT null)
INDEX ON cID TAG cID

Всё проходит нормально

Но не вникли видать в то, что у меня проблемма как раз в последнем...

Повторяю для всех - у меня в получившемся курсоре нет полей со значением .NULL., а беда в том что созданный в запрсе курсор РАЗРЕШАЕТ это значение по полю. Так вопрос - как же мне это значение заменить на NOT NULL?ALTER TABLE не прокатывает, а копировать курсор для модификации в DBF таблицу не хочется (долго получается). Может быть както можно сбросить энтот флаг при создании?
Ratings: 0 negative/0 positive
Re: CURSOR not null
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Посмотри этот пример, правда в 5-ке он ругается, надеюсь у тебя выше версия.

CREATE CURSOR test (cID c (240) null)
INSERT INTO test (cID) VALUES (null)
SELECT PADR(NVL(cID,''),240) AS cID FROM test INTO CURSOR test1 NOFILTER READWRITE
ALTER TABLE test1 alter COLUMN cID c(240) NOT null
SELECT test1
INDEX ON cID TAG cID




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: CURSOR not null
Lemonade Jo
Автор
У меня 7-ка, но на строку ALTER TABLE у меня в программе происходит пламенное послание...
... Черт все дери!Я допер... У меня небыло ключевого слова NOFILTER Как я зол
С ентами курсорами уже который раз сожусь в галошу
Ratings: 0 negative/0 positive
Re: CURSOR not null
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Ладно, не убивайся. Не только ты наступаешь на грабли дважды, как наш друг Чингачгук.




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 30 anelsasha  (Гостей: 29)

© 2000-2024 Fox Club 
Яндекс.Метрика