:: Visual Foxpro, Foxpro for DOS
create cursor и insert into cursor
danton1973

Сообщений: 143
Откуда: Пермь
Дата регистрации: 10.08.2020
Имеем
SET DATABASE TO (m.lcname_base)

CREATE CURSOR (m.lcCU_Table_sbor) (OBZ C(50),C20_1 N(5),C23_1 N(5),C20_2 N(5),C23_2 N(5),C22_1 N(5),naim C(240))

бла-бла коды
m.lcpole_nal1=m.lcCU_Table_sbor+'(OBZ,naim,C20_1)
SELECT (m.lcCU_Table_sbor)
курсор выбирается и становится активным (ALIAS()==(m.lcCU_Table_sbor))
INSERT INTO (m.lcpole_nal1);
SELECT ALLTRIM(OBZ),m.lcrezult,(m.lcpole_nal);
FROM (m.lcname_file)
Insert курсора не видит в упор - требует таблицу.

А еcли курсор открыть таким образом, то всё работает
CREATE CURSOR name1 (OBZ C(50),C20_1 N(5),C23_1 N(5),C20_2 N(5),C23_2 N(5),C22_1 N(5),naim C(240))
IF !USED(lcCU_Table_sbor)
USE dbf("name1") IN 0 AGAIN ALIAS &lcCU_Table_sbor
ENDIF

IF USED('Name1')
SELECT Name1
USE
ENDIF
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Какая то странная конструкция INSERT-а, я такой не знаю

www.foxclub.ru

или я запутался в Ваших именах переменных


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.




Исправлено 1 раз(а). Последнее : Chemberzhy, 01.09.20 12:49
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
danton1973

Сообщений: 143
Откуда: Пермь
Дата регистрации: 10.08.2020
INSERT INTO (m.lcCU_Table_sbor+'(OBZ,naim,C20_1))
так разворачивается
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Представленное выше и показанное сейчас две совершенно разные строки, да еще и с орфографическими ошибками


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
А что такое (m.lcpole_nal) в селекте?


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
danton1973

Сообщений: 143
Откуда: Пермь
Дата регистрации: 10.08.2020
m.lcpole_nal1=m.lcCU_Table_sbor+'(OBZ,naim,C20_1)
В переменную может быть записано разное:
m.lcpole_nal1=m.lcCU_Table_sbor+'(OBZ,naim,C21_1)
m.lcpole_nal1=m.lcCU_Table_sbor+'(OBZ,naim,C23_2)
и т.д.
m.lcpole_nal=m.lcName_file+'.C23_2'
m.lcpole_nal=m.lcName_file+'.C20_1'
и т.д.
m.lcName_file в свою очередь=alias()
который берётся из spr.name_file, по этому spr и бежит scan
ИМНО это к делу не относится.
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Просто замечал когда-то - в каких-то случаях именная адресация () и EVALUATE() не прокатывают в подстановках, приходится ставить &. В селектах в том числе.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Возможно настоящий алиас курсора просто немного не такой.
Поэтому инсерт его и не видит.
Проверь имя - глянь например через окошко Data Session. Насколько оно совпадает с ожидаемым.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)




Исправлено 1 раз(а). Последнее : Crispy, 01.09.20 13:20
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
danton1973

Сообщений: 143
Откуда: Пермь
Дата регистрации: 10.08.2020
такой вариант прокатывает
INSERT INTO &lcpole_nal1;
SELECT ALLTRIM(OBZ),m.lcrezult,(m.lcpole_nal);
FROM (m.lcname_file)
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
PaulWist

Сообщений: 14601
Дата регистрации: 01.04.2004
Какой кошмар, цель всего этого, зачем?


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

Сообщений: 34580
Дата регистрации: 28.05.2002
Выражение имени (то что в круглых скобках) может применяться для задания значений лишь отдельным идентификаторам - скажем имя курсора, или имя файла, но никак не кусков команды.

Вдумчиво читаем раздел хелпа
Name Expression Creation
и сравниваем с тем что написано про макро (макро позволяет подставлять целиком или частично команду - не только одно отдельное "имя" в ней).

Ну и поддержу Павла - использование макро и выражений имени должно быть обосновано - во многих случаях вся эта динамика с именами полей/курсоров не нужна.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
Taran

Сообщений: 13623
Откуда: Красноярск
Дата регистрации: 16.01.2008
Ну и, извиняюсь конечно.
Если цифры в нике это год рождения...
Не поздно ли начинать изучать похороненный фокс и видимо программирование в принципе.
Ежели банально пример кода не удаётся обрамить тэгом[code].
Ну не возможно на это смотреть.
Программирование это не та тема где канает орёл/решка, "а вот прокатывает".
Зачем оно Вам? Шансов ноль чего-либо достичь.
Заубожили профессию до ...
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
akvvohinc
Автор

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
danton1973
А еcли курсор открыть таким образом, то всё работает

Думаю, вы ошибаетесь.

Проблема не в том, как вы создаете курсор/таблицу, а, как вам уже указали выше, в неверном использовании выражения имени в строке:
INSERT INTO (m.lcpole_nal1);

Вы загнали в эту переменную и имя курсора, и список полей. Такое допустимо только через макро.
Выражением имени вы можете задать имя курсора, отдельное поле (поля) в списке полей - в общем, отдельную синтаксическую единицу.
И то не везде - если я не ошибаюсь, в этой команде:
SELECT ALLTRIM(OBZ),m.lcrezult,(m.lcpole_nal) FROM (m.lcname_file)
(m.lcpole_nal) выведет не то, что вы ожидаете (имя поля, а не его значение).

Имя самой команды (INSERT), ее опции (INTO, FROM), скобки, запятые и т.п., заданные выражением имени, работать не будут.
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> m.lcpole_nal1=m.lcCU_Table_sbor+'(OBZ,naim,C20_1)
> INSERT INTO (m.lcpole_nal1) ...

скобки - это не макроподстановка, не эквивалент желаемого вот такого видимо
INSERT INTO (m.lcCU_Table_sbor) (OBZ,naim,C20_1)

может как-то так

> m.lcpole_nal1 = 'OBZ,naim,C20_1' && закрывающая кавычка моя
> INSERT INTO (m.lcCU_Table_sbor) (&lcpole_nal1) ...
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
danton1973

Сообщений: 143
Откуда: Пермь
Дата регистрации: 10.08.2020
Я проверял. указанная мной конструкция работает.
INSERT INTO (m.lcCU_Table_sbor) &lcpole_nal1
тоже работает
читаемость кода улучшилась
Какой проект мне в наследство достался, с тем и вожусь.
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
danton1973
Какой проект мне в наследство достался, с тем и вожусь.
Пардон, не удеражался)
Но проект который достался, работает?
Вы начинаете модифицировать, и работать перестает.
Не лучше ли, разобравшись с алгоритмом, переписать все правильно?
И понятно (для себя)
Ratings: 0 negative/0 positive
Re: create cursor и insert into cursor
akvvohinc
Автор

Сообщений: 4203
Откуда: Москва
Дата регистрации: 11.11.2008
danton1973
Я проверял. указанная мной конструкция работает.

Значит, вы можете привести нам пример этой работы.

Я же могу привести пример, что такая конструкция не работает:
CREATE CURSOR cursor1 (fld1 I,fld2 C,fld3 D)
expr = 'cursor1 (fld1,fld2,fld3)'
INSERT INTO (expr) VALUES (1,'1',DATE())

А такая - работает:
CREATE CURSOR cursor1 (fld1 I,fld2 C,fld3 D)
cursname = 'cursor1'
fldname1 = 'fld1'
fldname2 = 'fld2'
INSERT INTO (cursname) ((fldname1),(fldname2),fld3) VALUES (1,'1',DATE())
BROWSE NORMAL



Исправлено 2 раз(а). Последнее : akvvohinc, 03.09.20 15:13
Ratings: 0 negative/0 positive


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

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

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