Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / синтаксис эррор / 14 сообщений из 14, страница 1 из 1
06.04.2015, 11:08
    #38927793
Olesia_Dav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Ругается на синтаксическую ошибку и все, я все вроде проверила правильно нигде запятых не забыла поставить вроде
select blpu,;
sum(IIF(plat=63001,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),c,0)),0)),0)),0)) as c71_1obrzab,sum(IIF(plat=63001,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),cusl,0)),0)),0)),0)) as cusl71_1obrzab,sum(IIF(plat=63001,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),s,0)),0)),0)),0)) as s71_1obrzab,;
sum(IIF(plat=63002,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),c,0)),0)),0)),0)) as c71_2obrzab,sum(IIF(plat=63002,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),cusl,0)),0)),0)),0)) as cusl71_2obrzab,sum(IIF(plat=63002,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),s,0)),0)),0)),0)) as s71_2obrzab,;
sum(IIF(plat=63018,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),c,0)),0)),0)),0)) as c71_18obrzab,sum(IIF(plat=63018,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),cusl,0)),0)),0)),0)) as cusl71_18obrzab,sum(IIF(plat=63018,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),s,0)),0)),0)),0)) as s71_18obrzab,;
sum(IIF(plat=63014,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),c,0)),0)),0)),0)) as c71_14obrzab,sum(IIF(plat=63014,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),cusl,0)),0)),0)),0)) as cusl71_14obrzab,sum(IIF(plat=63014,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),s,0)),0)),0)),0)) as s71_14obrzab,;
sum(IIF(plat=63023,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),c,0)),0)),0)),0)) as c71_23obrzab,sum(IIF(plat=63023,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),cusl,0)),0)),0)),0)) as cusl71_23obrzab,sum(IIF(plat=63023,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),s,0)),0)),0)),0)) as s71_23obrzab,;
sum(IIF(plat=63027,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),c,0)),0)),0)),0)) as c71_27obrzab,sum(IIF(plat=63027,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),cusl,0)),0)),0)),0)) as cusl71_27obrzab,sum(IIF(plat=63027,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),s,0)),0)),0)),0)) as s71_27obrzab,;
sum(IIF(plat=63024,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),c,0)),0)),0)),0)) as c71_24obrzab,sum(IIF(plat=63024,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),cusl,0)),0)),0)),0)) as cusl71_24obrzab,sum(IIF(plat=63024,(iif(n=71,(iif(app_goal=1,(IIF((INLIST(idsp,27,30)),s,0)),0)),0)),0)) as s71_24obrzab,;
sum(IIF(plat=63001,(iif(n=71,(IIF(idsp=12,c,0)),0)),0)) as c71_1cenzdor,sum(IIF(plat=63001,(iif(n=71,(IIF(idsp=12,cusl,0)),0)),0)) as cusl71_1cenzdor,sum(IIF(plat=63001,(iif(n=71,(IIF(idsp=12,s,0)),0)),0)) as s71_1cenzdor,;
sum(IIF(plat=63002,(iif(n=71,(IIF(idsp=12,c,0)),0)),0)) as c71_2cenzdor,sum(IIF(plat=63002,(iif(n=71,(IIF(idsp=12,cusl,0)),0)),0)) as cusl71_2cenzdor,sum(IIF(plat=63002,(iif(n=71,(IIF(idsp=12,s,0)),0)),0)) as s71_2cenzdor,;
sum(IIF(plat=63018,(iif(n=71,(IIF(idsp=12,c,0)),0)),0)) as c71_18cenzdor,sum(IIF(plat=63018,(iif(n=71,(IIF(idsp=12,cusl,0)),0)),0)) as cusl71_18cenzdor,sum(IIF(plat=63018,(iif(n=71,(IIF(idsp=12,s,0)),0)),0)) as s71_18cenzdor,;
sum(IIF(plat=63014,(iif(n=71,(IIF(idsp=12,c,0)),0)),0)) as c71_14cenzdor,sum(IIF(plat=63014,(iif(n=71,(IIF(idsp=12,cusl,0)),0)),0)) as cusl71_14cenzdor,sum(IIF(plat=63014,(iif(n=71,(IIF(idsp=12,s,0)),0)),0)) as s71_14cenzdor,;
sum(IIF(plat=63023,(iif(n=71,(IIF(idsp=12,c,0)),0)),0)) as c71_23cenzdor,sum(IIF(plat=63023,(iif(n=71,(IIF(idsp=12,cusl,0)),0)),0)) as cusl71_23cenzdor,sum(IIF(plat=63023,(iif(n=71,(IIF(idsp=12,s,0)),0)),0)) as s71_23cenzdor,;
sum(IIF(plat=63027,(iif(n=71,(IIF(idsp=12,c,0)),0)),0)) as c71_27cenzdor,sum(IIF(plat=63027,(iif(n=71,(IIF(idsp=12,cusl,0)),0)),0)) as cusl71_27cenzdor,sum(IIF(plat=63027,(iif(n=71,(IIF(idsp=12,s,0)),0)),0)) as s71_27cenzdor,;
sum(IIF(plat=63024,(iif(n=71,(IIF(idsp=12,c,0)),0)),0)) as c71_24cenzdor,sum(IIF(plat=63024,(iif(n=71,(IIF(idsp=12,cusl,0)),0)),0)) as cusl71_24cenzdor,sum(IIF(plat=63024,(iif(n=71,(IIF(idsp=12,s,0)),0)),0)) as s71_24cenzdor;
from rz_L2 into cursor blpu_714 group by blpu
copy to blpu_714 TYPE FOX2X as 866
...
Рейтинг: 0 / 0
06.04.2015, 11:53
    #38927839
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Версия фокса какая?

У меня в VFP6 и 9 нет ошибки, так работает:
Код: sql
1.
2.
3.
4.
create Cursor rz_L2 (blpu i, plat i, n i, app_goal i, idsp i, c i, cusl i, s i)

select blpu,;
...
...
Рейтинг: 0 / 0
06.04.2015, 12:15
    #38927880
Fffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Длина команды.
...
Рейтинг: 0 / 0
06.04.2015, 13:20
    #38927958
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Olesia_Davfrom rz_L2 into cursor blpu_714 group by blpuсначала должен быть групбай, а уже потом инту
...
Рейтинг: 0 / 0
06.04.2015, 13:57
    #38928013
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
tanglirOlesia_Davfrom rz_L2 into cursor blpu_714 group by blpuсначала должен быть групбай, а уже потом инту
В фоксе не должен, это в MSSQL порядок важен.

Рабочий это код. Нет ошибок. Скопипасти, мой create Cursor добавь и запусти.

Там либо фокс очень древний (ниже 6-го) и какие-то ограничения по длине срабатывают, либо ошибка вовсе не в этом коде.
...
Рейтинг: 0 / 0
06.04.2015, 23:46
    #38928609
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Для справки: Логическое выражение может состоять из нескольких выражений, объединенных через AND или OR.

Тогда запрос можно записать более компактно и наглядно

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
* Тестовый курсор для отладки синтаксиса запроса
create Cursor rz_L2 (blpu i, plat i, n i, app_goal i, idsp i, c i, cusl i, s i)

* Крайне не желательно использовать одинаковые имена как для источника, так и для цели
* Поэтому имя результирующего курсора изменил
* Также желательно всегда указывать внутренний алиас таблицы перед именами полей в команде Select-SQL

Select rz_L2.blpu, ;
	sum(Iif(rz_L2.plat=63001 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.c,0)) As c71_1obrzab, ;
	sum(Iif(rz_L2.plat=63001 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.cusl,0)) As cusl71_1obrzab, ;
	sum(Iif(rz_L2.plat=63001 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.s,0)) As s71_1obrzab, ;
	sum(Iif(rz_L2.plat=63002 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.c,0)) As c71_2obrzab, ;
	sum(Iif(rz_L2.plat=63002 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.cusl,0)) As cusl71_2obrzab, ;
	sum(Iif(rz_L2.plat=63002 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.s,0)) As s71_2obrzab, ;
	sum(Iif(rz_L2.plat=63018 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.c,0)) As c71_18obrzab, ;
	sum(Iif(rz_L2.plat=63018 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.cusl,0)) As cusl71_18obrzab, ;
	sum(Iif(rz_L2.plat=63018 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.s,0)) As s71_18obrzab, ;
	sum(Iif(rz_L2.plat=63014 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.c,0)) As c71_14obrzab, ;
	sum(Iif(rz_L2.plat=63014 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.cusl,0)) As cusl71_14obrzab, ;
	sum(Iif(rz_L2.plat=63014 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.s,0)) As s71_14obrzab, ;
	sum(Iif(rz_L2.plat=63023 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.c,0)) As c71_23obrzab, ;
	sum(Iif(rz_L2.plat=63023 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.cusl,0)) As cusl71_23obrzab, ;
	sum(Iif(rz_L2.plat=63023 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.s,0)) As s71_23obrzab, ;
	sum(Iif(rz_L2.plat=63027 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.c,0)) As c71_27obrzab, ;
	sum(Iif(rz_L2.plat=63027 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.cusl,0)) As cusl71_27obrzab, ;
	sum(Iif(rz_L2.plat=63027 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.s,0)) As s71_27obrzab, ;
	sum(Iif(rz_L2.plat=63024 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.c,0)) As c71_24obrzab, ;
	sum(Iif(rz_L2.plat=63024 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.cusl,0)) As cusl71_24obrzab, ;
	sum(Iif(rz_L2.plat=63024 And rz_L2.N=71 And rz_L2.app_goal=1 And Inlist(rz_L2.idsp,27,30),rz_L2.s,0)) As s71_24obrzab, ;
	sum(Iif(rz_L2.plat=63001 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.c,0)) As c71_1cenzdor, ;
	sum(Iif(rz_L2.plat=63001 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.cusl,0)) As cusl71_1cenzdor, ;
	sum(Iif(rz_L2.plat=63001 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.s,0)) As s71_1cenzdor, ;
	sum(Iif(rz_L2.plat=63002 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.c,0)) As c71_2cenzdor, ;
	sum(Iif(rz_L2.plat=63002 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.cusl,0)) As cusl71_2cenzdor, ;
	sum(Iif(rz_L2.plat=63002 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.s,0)) As s71_2cenzdor, ;
	sum(Iif(rz_L2.plat=63018 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.c,0)) As c71_18cenzdor, ;
	sum(Iif(rz_L2.plat=63018 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.cusl,0)) As cusl71_18cenzdor, ;
	sum(Iif(rz_L2.plat=63018 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.s,0)) As s71_18cenzdor, ;
	sum(Iif(rz_L2.plat=63014 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.c,0)) As c71_14cenzdor, ;
	sum(Iif(rz_L2.plat=63014 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.cusl,0)) As cusl71_14cenzdor, ;
	sum(Iif(rz_L2.plat=63014 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.s,0)) As s71_14cenzdor, ;
	sum(Iif(rz_L2.plat=63023 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.c,0)) As c71_23cenzdor, ;
	sum(Iif(rz_L2.plat=63023 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.cusl,0)) As cusl71_23cenzdor, ;
	sum(Iif(rz_L2.plat=63023 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.s,0)) As s71_23cenzdor, ;
	sum(Iif(rz_L2.plat=63027 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.c,0)) As c71_27cenzdor, ;
	sum(Iif(rz_L2.plat=63027 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.cusl,0)) As cusl71_27cenzdor, ;
	sum(Iif(rz_L2.plat=63027 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.s,0)) As s71_27cenzdor, ;
	sum(Iif(rz_L2.plat=63024 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.c,0)) As c71_24cenzdor, ;
	sum(Iif(rz_L2.plat=63024 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.cusl,0)) As cusl71_24cenzdor, ;
	sum(Iif(rz_L2.plat=63024 And rz_L2.N=71 And rz_L2.idsp=12,rz_L2.s,0)) As s71_24cenzdor ;
from rz_L2 ;
into Cursor blpu_714 ;
group By rz_L2.blpu

* Строго говоря, в данном случае эта команда лишняя, но для порядка лучше всегда писать
select cur_714

* Копирование результата в таблицу
copy to blpu_714 TYPE FOX2X as 866 
...
Рейтинг: 0 / 0
06.04.2015, 23:54
    #38928613
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Следует иметь в виду, что для DBF-таблиц формата Fox2x имена полей не могут быть длиннее 10 символов. Системное ограничение. Впрочем, и для свободных DBF-таблиц (не включенных в контейнер базы данных DBC) любой версии FoxPro это также справедливо.

На практике, это означает, что имена полей курсора при конвертации в формат Fox2x будут обрезаны до первых 10 символов. Как следствие, вместо имени поля, скажем "cusl71_14cenzdor" в таблице Fox2x будет поле с именем "cusl71_14c". Это может привести к дублированию имен полей, что недопустимо. Хотя, в данном конкретном случае этого не произойдет. Первые 10 символов будут уникальны.
...
Рейтинг: 0 / 0
07.04.2015, 02:02
    #38928648
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
FffffffffffffДлина команды.
В данном случае длина команды чуть менее 4 тысяч символов.

Для Visual FoxPro (любой версии) максимальная длина одной команда 8,192 символов. Т.е. укладываемся...
Для FPx2.6 максимальная длина одной команды 2,048 символов. Но как-то сомнительно, что это FP2.x...
...
Рейтинг: 0 / 0
07.04.2015, 10:07
    #38928829
Olesia_Dav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Я нашла в каком именно запросе ругается на синтаксическую ошибку

select blpu,;
ROUND(sum(IIF(plat=63001,(iif(n=73,(IIF((INLIST(app_goal,0,2)),(IIF(BETWEEN(vozr,0,17),(cuet/2.7),(cuet/2.9))),0)),0)),0)),2) as 1cstpos73;
from rz_L2 GROUP BY blpu
...
Рейтинг: 0 / 0
07.04.2015, 10:15
    #38928843
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Нельзя писать round(sum(...), 2)
можно
Код: sql
1.
sum(round(..., 2))


но это не совсем одно и тоже, т.к. сначала каждое слагаемое округляется, затем все складываются.

если надо округлить именно сумму, то сначала посчитать точно, затем округлять следующим запросом
...
Рейтинг: 0 / 0
07.04.2015, 10:38
    #38928866
Olesia_Dav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Оказывается что в fox-е нельзя называть поля с чисел, поэтому д.быть
select blpu,;
ROUND(sum(IIF(plat=63001,(iif(n=73,(IIF((INLIST(app_goal,0,2)),(IIF(BETWEEN(vozr,0,17),(cuet/2.7),(cuet/2.9))),0)),0)),0)),2) as cst1pos73;
from rz_L2 GROUP BY blpu
...
Рейтинг: 0 / 0
07.04.2015, 10:39
    #38928870
Olesia_Dav
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Всем спасибо
...
Рейтинг: 0 / 0
07.04.2015, 10:40
    #38928873
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
Dima TНельзя писать round(sum(...), 2)С чего бы это вдруг?
Dima Tесли надо округлить именно сумму, то сначала посчитать точно, затем округлять следующим запросомЫ? У меня на девятке работает.
...
Рейтинг: 0 / 0
07.04.2015, 10:45
    #38928879
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
синтаксис эррор
tanglirDima TНельзя писать round(sum(...), 2)С чего бы это вдруг?
Неправ. Затестил, можно, работает.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / синтаксис эррор / 14 сообщений из 14, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]