:: Visual Foxpro, Foxpro for DOS
Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
Существует динамический запрос, после того как он сформирован пользователем,происходит вывод на экран временного курсора по средством Browse.
Количество строк значение не постоянное, при изменении запроса их кол-во меняется. Прошу помощи в формировании поля с порядковым номером выводимых строк. Если добавляю в динамический запрос RECNO() не отрабатывает DISTINCT, как обойти этот вариант?
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> Количество строк значение не постоянное
Количество каких строк? Покажи пример данных.

ну... изобрази курсор из "динамический запрос":
SELECT * FROM (курсор_запроса, или он сам) INTO CURSOR aaa NOFILTER ORDER ...
SELECT RECNO(), * FROM aaa



Исправлено 1 раз(а). Последнее : of63, 30.03.18 00:22
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
он итак изображается, вопрос в том что если следовать такому принципу то запрос можно использовать только SELECT, а мне необходимо SELECT DISTINCT.
ПРИМЕР ДАННЫХ ПУСТЬ БУДЕТ ТАКОЙ
A01 A02 A03 A04
1 ИВАНОВ ИВАН ИВАНОВИЧ
2 ПЕТРОВ ПЕТР ПЕТРОВИЧ
3 СИДОРОВ ОЛЕГ ПЕТРОВИЧ

Необходимо сформировать поле А01 с номером по порядку. Количество полей величина переменная



Исправлено 2 раз(а). Последнее : ptaxa888, 30.03.18 00:31
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Покажи запрос без DICTINCT, и какие записи нужно наблюдать (нужно их количество получить?, или построчный список, кто вошет в этот DISCINCT?)
DISNINCT делает типа возможно набор записей по всем полям индекс UNICUE, только по одной "похожей" записи возвращает, ну, похоже проблема не в этом?
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
of63
Покажи запрос без DICTINCT, и какие записи нужно наблюдать (нужно их количество получить?, или построчный список, кто вошет в этот DISCINCT?)
DISNINCT делает типа возможно набор записей по всем полям индекс UNICUE, только по одной "похожей" записи возвращает, ну, похоже проблема не в этом?

lcScript=[SELECT DISTINCT ic.id]+lcScript+[ FROM ic LEFT JOIN fio ON ic.id=fio.id]+;
[ LEFT JOIN doljnost ON ic.a02=doljnost.a02]+;
[ LEFT JOIN ic!sprav sprav ON ic.a05=sprav.kod]+;
[ LEFT JOIN ic!sprav sprav_a ON ic.a06=sprav_a.kod]+;
[ LEFT JOIN ic!sprav sprav_b ON ic.a07=sprav_b.kod]+;
[ LEFT JOIN ic!sprav sprav_c ON ic.a11=sprav_c.kod]+;
[ LEFT JOIN ic!sprav sprav_d ON ic.a16=sprav_d.kod]+;
[ LEFT JOIN obraz ON ic.id=obraz.id]+;
[ LEFT JOIN deti ON ic.id=deti.id]+;
[ LEFT JOIN ic!sprav sprav_g ON ic.a26=sprav_g.kod]+;
[ LEFT JOIN ic!sprav sprav_h ON ic.a29=sprav_h.kod]+;
[ LEFT JOIN ic!sprav sprav_e ON ic.a31=sprav_e.kod]+;
[ LEFT JOIN passport ON ic.id=passport.id]+;
[ LEFT JOIN phone ON ic.id=phone.id]+;
[ LEFT JOIN weapon ON ic.id=weapon.id]+;
[ LEFT JOIN avto ON ic.id=avto.id]+;
[ LEFT JOIN prava ON ic.id=prava.id]+;
[ LEFT JOIN ic!sprav sprav_f ON ic.a37=sprav_f.kod]+;
[ LEFT JOIN ic!sprav sprav_k ON ic.a39=sprav_k.kod]+;
cWhere1+cWhere2+cWhere3+[ ORDER BY ic.id]+[ INTO CURSOR cOut READWRITE]
Запрос выводит необходимую мне информацию по людям, мне нужно программно произвести последовательную нумерация строк. Грубо говоря если вылезло 10 человек то поле А01 должно нумероваться 1 ... 10, если 20 человек соответственно 1 ... 20. В запросе должен использоваться DISTINCT - без него никак.
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
ахренеть )
но выведи курсор, и получи RECNO записей этого курсора как вторичный, аа, третичный SELECT
SELECT * FROM (суперселект с ордерами и группировками, точнее наоборот) INTO CURSOR aaa
SELECT RECNO() AS номер, * FROM aaa
Ratings: 0 negative/1 positive
Re: Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
ПОПРОБУЕМ-КА)
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
ptaxa888
В запросе должен использоваться DISTINCT - без него никак.
Тебе же написали - сделай ДВА запроса. Сначала выбери что надо с distinct и order, потом из первого курсора во второй recno() и *
Или в первом запросе добавь к списку выбираемых полей фикстивное "пустое" поле, скажем CAST(0 as I) ordinal_number - на distinct оно никак не повлияет. READWRITE в запросе уже есть, так что после запроса пропиши recno() в это поле
UPDATE cOut SET ordinal_number=RECNO()
и показывай себе где угодно


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
of63
ахренеть )
но выведи курсор, и получи RECNO записей этого курсора как вторичный, аа, третичный SELECT
SELECT * FROM (суперселект с ордерами и группировками, точнее наоборот) INTO CURSOR aaa
SELECT RECNO() AS номер, * FROM aaa
РАБОТАЕТ, СПАСИБО) ПРОЩЕ НЕ КУДА
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
возможно придется выполнить эту конструкцию (типовую макроконструкцию для фокса) в "правильном, ожидаемом" алиасе, посклоьку используеься ф-ия RECNO() - номер записи в текущем алиасе.

SELECT * FROM (суперселект с ордерами и группировками, точнее наоборот) INTO CURSOR aaa
SELECT RECNO() AS номер, * FROM aaa

Вобщем, с пониманем к фоксу придется отнестись, удачи вобщем )
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
Подскажите, вот нужна мне сортировка по полю id но выводить это поле в browse я не хочу. ORDER BY id срабатывает только в том случае если поле id есть в SELECT а оно мне там не нужно. Такого поля которое присутствовало в выводимом курсоре постоянным - нет. Как поступить?



Исправлено 1 раз(а). Последнее : ptaxa888, 30.03.18 01:04
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
раздели вопросы:

- вот нужна мне сортировка по полю id но выводить это поле в browse я не хочу.
- RDER BY id срабатывает только в том случае если поле id есть в SELECT а оно мне там не нужно. (?)
- Такого поля которое присутствовало в выводимом курсоре постоянным - нет.

Как поступить?

Доб. И почему не спишь?



Исправлено 1 раз(а). Последнее : of63, 30.03.18 01:09
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
Цель: нужна сортировка выводимого курсора по полю id, без отображения этого поля (id) в курсоре.

ЗАЧЕМ ЭТО: вместо поля id теперь используется recno() as №п/п, но сортировка должна оставаться прежней.



Исправлено 1 раз(а). Последнее : ptaxa888, 30.03.18 01:13
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
отображение в фоксе - не суть (отображают курсор видеоинструменты, типа BROW, или Grid). Наличие в курсоре !"лишнего" ( и любого другого служебного) поля, типа ID не помешает красивому отображению на экране, в т.ч. в Grid

> но сортировка должна оставаться прежней.
для этого надо предпринять усилия - соохранить RECNO исходной "записи" (№ строоки в "прежнем" файле). Потом мы по нему сможем сортировать, да ведь?



Исправлено 1 раз(а). Последнее : of63, 30.03.18 01:16
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
щас попробуем)



Исправлено 1 раз(а). Последнее : ptaxa888, 30.03.18 01:22
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Птаха888 окрыляет )
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
of63
Птаха888 окрыляет )
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
ptaxa888
Автор

Сообщений: 61
Дата регистрации: 07.03.2018
of63
для этого надо предпринять усилия - соохранить RECNO исходной "записи" (№ строоки в "прежнем" файле). Потом мы по нему сможем сортировать, да ведь?
По нему мы сможем сортировать а как выкинуть поле id из * ? не перечислять же все 40 полей за искл id
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
В выходном отчете? У вас так банально: из рабочего курсора COPY TO ... TYPE XL5.. ну, сделай "кусрор без первого поля", там: AFIELDS, удаление/добавление полей (строк в массиве), CREATE FROM ARRAY, APPEND FROM ... например? Сложно? можно SELECT-строку построить извлечения, подставить макросом... Фантазируюй
Ratings: 0 negative/0 positive
Re: Последовательная нумерация строк в курсоре
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
ptaxa888
По нему мы сможем сортировать а как выкинуть поле id из * ? не перечислять же все 40 полей за искл id
Именно ПЕРЕЧИСЛЯТЬ!И никак иначе. И так всегда (Ну кроме отладки)


------------------
Ratings: 0 negative/0 positive


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

On-line: 22 akvvohinc  (Гостей: 21)

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