Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с запросом!!! / 16 сообщений из 16, страница 1 из 1
27.05.2009, 11:27
    #36010002
Sour
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
Уважаемые форумчане прошу помощи в простом запросе поскольку в Фоксе несилен, есть бухгалтерская прога на Фоксе и нужно сделать отчет

собственно запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Select
      ml.marka as postav,
      ml.grup as sgrup,
      ml.nnum as snnum,
      ml.name as sartic,
      ml.ed as ed,
      mdm.skolout as rskolout,
      mdm.ssum as rssum,
      mdm.ssumout as rssumout

from sclad_mlabel ml

join (select
      md.grup,
      md.nnum,
      SUM(IIF(md.vid ='1' and md.type ='5',-md.kolout,(IIF(md.vid ='2' and md.type ='1',md.kolout, 0 )))) as skolout,
      SUM(IIF(md.vid ='1' and md.type ='5',-md.sum,(IIF(md.vid ='2' and md.type ='1',md.sum, 0 )))) as ssum,
      SUM(IIF(md.vid ='1' and md.type ='5',-md.sumout,(IIF(md.vid ='2' and md.type ='1',md.sumout, 0 )))) as ssumout
      from sclad_mdocm md
      into cursor mdm
      where (md.date between :Sdate and :edate) and md.schet_a like'361%%' and md.sclad=:sclad and md.sclad<>'000010' and md.sclad<>'000021' and md.sclad<>'000022' and md.sclad<>'000023'
      group by md.grup,md.nnum) mdm on ml.grup = mdm.grup and ml.nnum=mdm.nnum

group by ml.marka,ml.grup,ml.nnum,ml.name,ml.ed,mdm.skolout,mdm.ssum,mdm.ssumout

Приложение кричит что синтаксическая ошибка!!! ткните носом где именно!!!
...
Рейтинг: 0 / 0
27.05.2009, 11:32
    #36010018
ПД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
:Sdate and :edate
вроде вот эти двоеточия... не из фокса
...
Рейтинг: 0 / 0
27.05.2009, 11:38
    #36010044
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
А чем проблема?
Ну замените :Sdate and :edate на переменные, которые определяют диапазон дат запроса и должно работать.
С уважением, Алексей
...
Рейтинг: 0 / 0
27.05.2009, 11:43
    #36010071
Sour
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
Aleksey-K,

Через : обозначается переменная которая передается с пользовательской формы
...
Рейтинг: 0 / 0
27.05.2009, 11:48
    #36010093
Sour
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
Aleksey-K,

Собственно данный скрипт я пишу именно у бух проге, в ней есть инструмент для написания запросов к БД
...
Рейтинг: 0 / 0
27.05.2009, 11:56
    #36010124
Березовский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
Чё то Вы не то говорите
:Sdate - это переменная?
:Sdate=1 выдаст ошибку :)
...
Рейтинг: 0 / 0
27.05.2009, 12:01
    #36010139
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
вообще как то все интересно ...

это то зачем?

Код: plaintext
group by ml.marka,ml.grup,ml.nnum,ml.name,ml.ed,mdm.skolout,mdm.ssum,mdm.ssumout

distinct что ли?
...
Рейтинг: 0 / 0
27.05.2009, 12:03
    #36010144
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
Код: plaintext
1.
from sclad_mdocm md
into cursor mdm

купите хорошую книгу ... хотя может в последних версиях так и можно ...
года 3 не прикасаюсь к фоксу но такого вроде не было
...
Рейтинг: 0 / 0
27.05.2009, 13:24
    #36010457
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
SourПриложение кричит что синтаксическая ошибка!!! ткните носом где именно!!!
Текст ошибки приведите, как есть.

Иначе, могу сказать только, что ваш запрос - это не диалект фокса.
...
Рейтинг: 0 / 0
27.05.2009, 13:28
    #36010473
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
Sour,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Select
      ml.marka as postav,
      ml.grup as sgrup,
      ml.nnum as snnum,
      ml.name as sartic,
      ml.ed as ed,
      mdm.skolout as rskolout,
      mdm.ssum as rssum,
      mdm.ssumout as rssumout

from sclad_mlabel ml

join (select
      md.grup,
      md.nnum,
      SUM(IIF(md.vid ='1' and md.type ='5',-md.kolout,(IIF(md.vid ='2' and md.type ='1',md.kolout, 0 )))) as skolout,
      SUM(IIF(md.vid ='1' and md.type ='5',-md.sum,(IIF(md.vid ='2' and md.type ='1',md.sum, 0 )))) as ssum,
      SUM(IIF(md.vid ='1' and md.type ='5',-md.sumout,(IIF(md.vid ='2' and md.type ='1',md.sumout, 0 )))) as ssumout
      from sclad_mdocm md
      where (md.date between :Sdate and :edate) and md.schet_a like'361%%' and md.sclad=:sclad and md.sclad<>'000010' and md.sclad<>'000021' and md.sclad<>'000022' and md.sclad<>'000023'
      group by md.grup,md.nnum) mdm on ml.grup = mdm.grup and ml.nnum=mdm.nnum

group by ml.marka,ml.grup,ml.nnum,ml.name,ml.ed,mdm.skolout,mdm.ssum,mdm.ssumout
into cursor mdm NOFILTER

И еще... В глаза бросается, то что у вас "into cursor mdm" где-то не там стоит
...
Рейтинг: 0 / 0
27.05.2009, 13:30
    #36010482
Tohan_ORA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
У вас внутри подзапроса стоит команда выбора данных в курсор-это видимо неверно, да и запрос можно привести к более читабельному виду, переменные также д.б. определены на момент выполнения запроса,попробуйте вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Select distinct ml.marka as postav,ml.grup as sgrup,ml.nnum as snnum,ml.name as sartic,
      ml.ed as ed,mdm.skolout as rskolout,mdm.ssum as rssum,mdm.ssumout as rssumout
from sclad_mlabel ml
join (select grup,nnum,
      SUM(Iсase(md.vid ='1' and md.type ='5',-md.kolout,md.vid ='2' and md.type ='1',md.kolout, 0 ) skolout,
      SUM(Icase(vid ='1' and type ='5',-sum,vid ='2' and type ='1',sum, 0 ) ssum,
      SUM(Icase(vid ='1' and type ='5',-sumout,vid ='2' and type ='1',sumout, 0 ) ssumout
      from sclad_mdocm 
      where (date between :Sdate and :edate) and schet_a like'361%%' and sclad=:sclad and sclad<>'000010' and sclad<>'000021' and sclad<>'000022' and sclad<>'000023'
      group by grup,nnum) mdm 
on ml.grup = mdm.grup and ml.nnum=mdm.nnum
...
Рейтинг: 0 / 0
27.05.2009, 13:34
    #36010495
Tohan_ORA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
Tohan_ORAУ вас внутри подзапроса стоит команда выбора данных в курсор-это видимо неверно, да и запрос можно привести к более читабельному виду, переменные также д.б. определены на момент выполнения запроса,попробуйте вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Select distinct ml.marka postav,ml.grup sgrup,ml.nnum snnum,ml.name sartic,
      ml.ed ed,mdm.skolout rskolout,mdm.ssum rssum,mdm.ssumout rssumout
from sclad_mlabel ml
join (select grup,nnum,
      SUM(Iсase(md.vid ='1' and md.type ='5',-md.kolout,md.vid ='2' and md.type ='1',md.kolout, 0 ) skolout,
      SUM(Icase(vid ='1' and type ='5',-sum,vid ='2' and type ='1',sum, 0 ) ssum,
      SUM(Icase(vid ='1' and type ='5',-sumout,vid ='2' and type ='1',sumout, 0 ) ssumout
      from sclad_mdocm 
      where (date between :Sdate and :edate) and schet_a like'361%%' and sclad=:sclad and sclad<>'000010' and sclad<>'000021' and sclad<>'000022' and sclad<>'000023'
      group by grup,nnum) md 
on ml.grup = mdm.grup and ml.nnum=mdm.nnum
into cursor mdm

Да,забыл что вы данные выбираете в курсор. :-)
...
Рейтинг: 0 / 0
27.05.2009, 13:38
    #36010514
Tohan_ORA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Select distinct ml.marka postav,ml.grup sgrup,ml.nnum snnum,ml.name sartic,
      ml.ed ed,mdm.skolout rskolout,mdm.ssum rssum,mdm.ssumout rssumout
from sclad_mlabel ml
join (select grup,nnum,
      SUM(Iсase(md.vid ='1' and md.type ='5',-md.kolout,md.vid ='2' and md.type ='1',md.kolout, 0 ) skolout,
      SUM(Icase(vid ='1' and type ='5',-sum,vid ='2' and type ='1',sum, 0 ) ssum,
      SUM(Icase(vid ='1' and type ='5',-sumout,vid ='2' and type ='1',sumout, 0 ) ssumout
      from sclad_mdocm 
      where (date between :Sdate and :edate) and schet_a like'361%%' and sclad=:sclad and sclad<>'000010' and sclad<>'000021' and sclad<>'000022' and sclad<>'000023'
      group by grup,nnum) mdm 
on ml.grup = mdm.grup and ml.nnum=mdm.nnum
into cursor mdm
Тьфу! Совсем запутался с вашими одноименными курсорами-алиасами :-)
...
Рейтинг: 0 / 0
27.05.2009, 14:18
    #36010685
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
В данном случае, подзапрос вообще не нужен

Код: plaintext
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.
local ldStartDate, ldEndDate, lcSclad

* Тестовые данные
ldStartDate = date()- 10 
ldEndDate = date()
lcSclad = '000001'

select ;
      ml.marka as postav, ;
      ml.grup as sgrup, ;
      ml.nnum as snnum, ;
      ml.name as sartic, ;
      ml.ed as ed, ;
      SUM(IIF(md.vid ='1' and md.type ='5',-md.kolout,(IIF(md.vid ='2' and md.type ='1',md.kolout, 0 )))) as rskolout, ;
      SUM(IIF(md.vid ='1' and md.type ='5',-md.sum,(IIF(md.vid ='2' and md.type ='1',md.sum, 0 )))) as rssum, ;
      SUM(IIF(md.vid ='1' and md.type ='5',-md.sumout,(IIF(md.vid ='2' and md.type ='1',md.sumout, 0 )))) as rssumout ;
from sclad_mlabel ml ;
inner join sclad_mdocm md on ml.grup = md.grup and ml.nnum=md.nnum ;
where 	md.date between m.ldStartDate and m.ldEndDate ;
	and md.schet_a like '%361%' ;
	and md.sclad = m.lcSclad ;
	and md.sclad not in ('000010', '000021', '000022', '000023') ;
group by ;
	ml.marka, ;
	ml.grup, ;
	ml.nnum, ;
	ml.name, ;
	ml.ed

Хотя все-таки желательно сообщать версию FoxPro.
...
Рейтинг: 0 / 0
27.05.2009, 15:51
    #36011093
Sour
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
ВладимирМВ данном случае, подзапрос вообще не нужен

Код: plaintext
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.
local ldStartDate, ldEndDate, lcSclad

* Тестовые данные
ldStartDate = date()- 10 
ldEndDate = date()
lcSclad = '000001'

select ;
      ml.marka as postav, ;
      ml.grup as sgrup, ;
      ml.nnum as snnum, ;
      ml.name as sartic, ;
      ml.ed as ed, ;
      SUM(IIF(md.vid ='1' and md.type ='5',-md.kolout,(IIF(md.vid ='2' and md.type ='1',md.kolout, 0 )))) as rskolout, ;
      SUM(IIF(md.vid ='1' and md.type ='5',-md.sum,(IIF(md.vid ='2' and md.type ='1',md.sum, 0 )))) as rssum, ;
      SUM(IIF(md.vid ='1' and md.type ='5',-md.sumout,(IIF(md.vid ='2' and md.type ='1',md.sumout, 0 )))) as rssumout ;
from sclad_mlabel ml ;
inner join sclad_mdocm md on ml.grup = md.grup and ml.nnum=md.nnum ;
where 	md.date between m.ldStartDate and m.ldEndDate ;
	and md.schet_a like '%361%' ;
	and md.sclad = m.lcSclad ;
	and md.sclad not in ('000010', '000021', '000022', '000023') ;
group by ;
	ml.marka, ;
	ml.grup, ;
	ml.nnum, ;
	ml.name, ;
	ml.ed

Хотя все-таки желательно сообщать версию FoxPro.

Спасибо то что нужно!!!! как еще добавить один параметр на выборку проблемма в том что параметр храниться в поле которое имеет вид "хххххх-хх-ххх" сегмент "хххххх" и есть условие
...
Рейтинг: 0 / 0
27.05.2009, 17:00
    #36011355
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом!!!
SourСпасибо то что нужно!!!! как еще добавить один параметр на выборку проблемма в том что параметр храниться в поле которое имеет вид "хххххх-хх-ххх" сегмент "хххххх" и есть условие
Ну, судя по описанию, задаются первые символы значения. Значит, в общем случае, это будет условие вида

Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL lcMyVar
lcMyVar = "хххххх"

SELECT ...
WHERE ...
	AND MyField LIKE m.lcMyVar+'%'

Можно и без Like, простым сравнением. Но при использовании прямого сравнения обязательно должна быть настройка

SET ANSI OFF

И, хотя это настройка по умолчанию, тем не менее, это надо будет проверять. А использование Like от нее не зависит.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с запросом!!! / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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