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 |
Re: create cursor и insert into cursor | |
---|---|
Chemberzhy Сообщений: 13142 Откуда: Измаил Дата регистрации: 28.04.2009 |
Какая то странная конструкция INSERT-а, я такой не знаю
www.foxclub.ru или я запутался в Ваших именах переменных ------------------ Что-то с памятью моей стало, всё что было не со мной- помню. Исправлено 1 раз(а). Последнее : Chemberzhy, 01.09.20 12:49 |
Re: create cursor и insert into cursor | |
---|---|
danton1973 Сообщений: 143 Откуда: Пермь Дата регистрации: 10.08.2020 |
INSERT INTO (m.lcCU_Table_sbor+'(OBZ,naim,C20_1))
так разворачивается |
Re: create cursor и insert into cursor | |
---|---|
Chemberzhy Сообщений: 13142 Откуда: Измаил Дата регистрации: 28.04.2009 |
Представленное выше и показанное сейчас две совершенно разные строки, да еще и с орфографическими ошибками
------------------ Что-то с памятью моей стало, всё что было не со мной- помню. |
Re: create cursor и insert into cursor | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
А что такое (m.lcpole_nal) в селекте?
------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
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 ИМНО это к делу не относится. |
Re: create cursor и insert into cursor | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Просто замечал когда-то - в каких-то случаях именная адресация () и EVALUATE() не прокатывают в подстановках, приходится ставить &. В селектах в том числе.
------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: create cursor и insert into cursor | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Возможно настоящий алиас курсора просто немного не такой.
Поэтому инсерт его и не видит. Проверь имя - глянь например через окошко Data Session. Насколько оно совпадает с ожидаемым. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 1 раз(а). Последнее : Crispy, 01.09.20 13:20 |
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) |
Re: create cursor и insert into cursor | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Какой кошмар, цель всего этого, зачем?
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: create cursor и insert into cursor | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Выражение имени (то что в круглых скобках) может применяться для задания значений лишь отдельным идентификаторам - скажем имя курсора, или имя файла, но никак не кусков команды.
Вдумчиво читаем раздел хелпа Name Expression Creation и сравниваем с тем что написано про макро (макро позволяет подставлять целиком или частично команду - не только одно отдельное "имя" в ней). Ну и поддержу Павла - использование макро и выражений имени должно быть обосновано - во многих случаях вся эта динамика с именами полей/курсоров не нужна. ------------------ WBR, Igor |
Re: create cursor и insert into cursor | |
---|---|
Taran Сообщений: 13623 Откуда: Красноярск Дата регистрации: 16.01.2008 |
Ну и, извиняюсь конечно.
Если цифры в нике это год рождения... Не поздно ли начинать изучать похороненный фокс и видимо программирование в принципе. Ежели банально пример кода не удаётся обрамить тэгом[code]. Ну не возможно на это смотреть. Программирование это не та тема где канает орёл/решка, "а вот прокатывает". Зачем оно Вам? Шансов ноль чего-либо достичь. Заубожили профессию до ... |
Re: create cursor и insert into cursor | |
---|---|
akvvohinc Автор Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Думаю, вы ошибаетесь. Проблема не в том, как вы создаете курсор/таблицу, а, как вам уже указали выше, в неверном использовании выражения имени в строке:
Вы загнали в эту переменную и имя курсора, и список полей. Такое допустимо только через макро. Выражением имени вы можете задать имя курсора, отдельное поле (поля) в списке полей - в общем, отдельную синтаксическую единицу. И то не везде - если я не ошибаюсь, в этой команде:
Имя самой команды (INSERT), ее опции (INTO, FROM), скобки, запятые и т.п., заданные выражением имени, работать не будут. |
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) ... |
Re: create cursor и insert into cursor | |
---|---|
danton1973 Сообщений: 143 Откуда: Пермь Дата регистрации: 10.08.2020 |
Я проверял. указанная мной конструкция работает.
INSERT INTO (m.lcCU_Table_sbor) &lcpole_nal1 тоже работает читаемость кода улучшилась Какой проект мне в наследство достался, с тем и вожусь. |
Re: create cursor и insert into cursor | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Пардон, не удеражался) Но проект который достался, работает? Вы начинаете модифицировать, и работать перестает. Не лучше ли, разобравшись с алгоритмом, переписать все правильно? И понятно (для себя) |
Re: create cursor и insert into cursor | |
---|---|
akvvohinc Автор Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Значит, вы можете привести нам пример этой работы. Я же могу привести пример, что такая конструкция не работает:
А такая - работает:
Исправлено 2 раз(а). Последнее : akvvohinc, 03.09.20 15:13 |
© 2000-2024 Fox Club  |