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

Сообщений: 61
Дата регистрации: 07.03.2018
[quote ptaxa888][quote of63]ахренеть )
но



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

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

Можно же и "научить плохому":
Create cursor cur1 (id i, name c(10))
Insert into cur1 values (1,"first")
Insert into cur1 values (2,"second")
Insert into cur1 values (3,"third")
Select * from cur1 into cursor cur2 order by id readwrite
Alter table cur2 drop column id
Browse
Ratings: 0 negative/1 positive
Re: Последовательная нумерация строк в курсоре
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
Можно)
Нужно ли, вот вопрос)))
Можно говорить о читаемости, о производительности...
Дело в том, что надо привыкнуть писать правильно)
ВСЕГДА.

А то тут на 6 страниц дискуссия, как работать запросами с нереляционными данными)))


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

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

Можно же и "научить плохому":
Create cursor cur1 (id i, name c(10))
Insert into cur1 values (1,"first")
Insert into cur1 values (2,"second")
Insert into cur1 values (3,"third")
Select * from cur1 into cursor cur2 order by id readwrite
Alter table cur2 drop column id
Browse
Учимся плохому куда деваться.
Странные вещи происходят...ругается на строчку ALTER, но не всегда.
SELECT * FROM cOut INTO CURSOR qwerty ORDER BY id READWRITE
ALTER TABLE qwerty DROP COLUMN id
BROWSE
USE
Поле id удаляется когда в * находятся поля из связанных таблиц(например: fio, prava), но когда попадают поля основной таблицы(ic.dbf) выпадает ошибка с указанием на строку alter - "invalid operation for the cursor". В коде никаких PACK не встречается, помеченные на удаление строки были точно, но после повторного открытия dbf они не появлялись.
cOut это тот самый конечный курсор который содержит реквизиты динамического запроса.
lcScript1=[SELECT DISTINCT ic.id]+lcScript1+[ 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 ic!sprav sprav_j ON ic.a35==sprav_j.kod]+;
[ 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]+;
[ LEFT JOIN ic!sprav sprav_i ON ic.a41==sprav_i.kod]+;
cWhere1+cWhere2+cWhere3+[ ORDER BY ic.id]+[ INTO CURSOR cOut READWRITE]
этот запрос скоро кому-нибудь приснится...



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

Сообщений: 3202
Откуда: Рига
Дата регистрации: 03.02.2006
ptaxa888
Учимся плохому куда деваться.

Желание учиться плохому пагубно.
Применять команду ALTER к курсору категорически нельзя до тех пор, пока Вы досконально не разберетесь, почему первый из приведенных примеров работает нормально, а второй вылетает по ошибке.

CREATE CURSOR c1 (Myfield001 i)
ALTER TABLE c1 alter Myfield001 d
CREATE CURSOR c2 (Myfield0002 i)
ALTER TABLE c2 alter Myfield0002 d
Ratings: 0 negative/0 positive


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

On-line: 19 dafni_2004 MikhsR  (Гостей: 17)

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