Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Присвоение переменной единственного значения выборки  [new]
NE_specialist
Guest
Можно ли в VFP7 сделать SELECT(SQL) прямо в переменную памяти, если выборка гарантированно возвращает единственное значение (типа Select poleq, max(pole2) from ... group by...)?
15 июл 05, 13:51    [1708094]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменной единственного значения выборки  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Только в массив (SELECT ... FROM ... INTO ARRAY ...), но если SELECT... возвратил одно поле и одну запись, то на массив можешь ссылаться без указания индекса (как на переменную). Но вот если вообще ни одна запись не вернулась и в SELECT не агрегатная функция, то массив не создаться и ссылка на него приведет к ошибке.
С уважением, Алексей.
15 июл 05, 13:58    [1708156]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменной единственного значения выборки  [new]
Crispy
Member

Откуда:
Сообщений: 523
Поэтому надо сначала объявить переменную - глобально, локально или - как тебе надо, потом создать массив командой DIMENSION name_array(1), и потом уже - делать выборку. Можно еще после определения массива, чтобы не получить ошибку типа данных, задать ему какое-то значение, например =0, что будет означать, что выборка пустая.
15 июл 05, 14:15    [1708301]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменной единственного значения выборки  [new]
NE_specialist
Guest
Всем большое спасибо. Прозрел :)
15 июл 05, 14:38    [1708466]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменной единственного значения выборки  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Я бы вообще рекомендовал отказаться от ...INTO ARRAY ...
Проще писать ...INTO CURSOR _temp
В не зависимости от кол-ва строк, возвращаемых запросом, курсор _temp всегда создается.
С уважением, Алексей.
15 июл 05, 17:50    [1709893]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменной единственного значения выборки  [new]
NE_specialist
Guest
To Aleksey-K:
Спасибо, я, обычно, курсоры и использую, причем - везде, где нецелесообразно создавать таблицу. Так к этому привык, что очень трудно мне теперь воспринимать код на тех языках, в которых используется recordset-идеология :)
15 июл 05, 22:58    [1710293]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменной единственного значения выборки  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Aleksey-K!

Вообще в ранних версиях фокса наблюдалось отклонение от нормального (стандартного) поведения при исполнении команд типа SELECT MAX(nID) FROM ... - курсор конечно создавался, но он не имел записей, если таблица была пуста! Тогда как по стандарту он должен был вернуть 1 запись с NULL в качестве значения. Это справедливо для любых агрегатных выборок... Так что помимо прочего стоит и _TALLY проверять...

Posted via ActualForum NNTP Server 1.2

16 июл 05, 18:26    [1710912]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменной единственного значения выборки  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Для Igor Korolyov

В VFP 8.0 + SP1 и в VFP 9.0 все работает нормально (1 запись с NULL в качестве значения)

Это справедливо для любых агрегатных выборок...

Кроме COUNT(*)
С уважением, Алексей.
16 июл 05, 20:49    [1711020]     Ответить | Цитировать Сообщить модератору
 Re: Присвоение переменной единственного значения выборки  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Aleksey-K!

> В VFP 8.0 + SP1

CREATE CURSOR t1 (nID I)
SELECT MAX(nID) FROM t1 && пустой курсор
SELECT COUNT(*) FROM t1 && тут я слегка погорячился - в ТАКОМ виде работает и в старых версиях
SELECT COUNT(*), MAX(nID) FROM t1 && ОДНАКО в таком виде - опять 0 записей

> в VFP 9.0 все работает нормально

В 9-ке работает :) О чём я и написал.

Posted via ActualForum NNTP Server 1.2

19 июл 05, 00:49    [1714548]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить