Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Проблема с запросом  [new]
tigramax
Member

Откуда:
Сообщений: 21
В командном окне ввожу строку с запросом все отрабатывает нормально
в моем методе вылетает с ошибкой отсутствует :или неправильно объявлен group by.
Вот фрагмент метода ошибка возникает на последней строке:
d1 = CTOD(ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate1.Day))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate1.Month))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate1.Year)))
d2 = CTOD(ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate2.Day))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate2.Month))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate2.Year)))

Select product_id As pid, sum(nalichie) As ss FROM SKLAD Group BY product_id INTO CURSOR crSklad
Select product_id As pid, sum(amount) As ss FROM ZAKUPKI WHERE date >= d1 AND date <= d2 Group BY product_id INTO CURSOR crZak
Select product_id As pid, sum(amount) As ss FROM SALE WHERE date >= d1 AND date <= d2 Group BY product_id INTO CURSOR crSale
Select product_id As pid, sum(amount) As ss FROM VOZVRAT WHERE date >= d1 AND date <= d2 Group BY product_id INTO CURSOR crVozvrat
Select product_id As pid, sum(amount) As ss FROM SPISANIE WHERE date >= d1 AND date <=d2 Group BY product_id INTO CURSOR crSpisanie
1 июл 05, 17:50    [1668736]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
Sergey Sizov.
Guest
1. Вот такое выражение:
CTOD(ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate1.Day))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate1.Month))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate1.Year)))
можно заменить на такое:
date(ThisForm.Pageframe1.Page4.OLEDate1.Year, ThisForm.Pageframe1.Page4.OLEDate1.Month, ThisForm.Pageframe1.Page4.OLEDate1.Day)

Мне оно кажется элегантнее.

2. Вот такое выражение:
date >= d1 AND date <= d2
неплохо заменяется на:
date between d1 and d2

Но тут уже дело вкуса.

3.Проверь полноту идентичности product_id в select и в group by. Другими словами - совпадают ли они буква в букву, не затерлась ли где русская буковка.
1 июл 05, 18:18    [1668823]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
tigramax
Member

Откуда:
Сообщений: 21
Блин! не помогает! в group by и в select написал все по аглицки та же самая ошибка
4 июл 05, 12:17    [1671600]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
leaf
Member [заблокирован]

Откуда: Ростов-на-Дону --> Москва
Сообщений: 2661
почему то навязчивая идея спросить вас про комментарии
не предшесвуют ли они запросу?
а то может они пол строки кода сожрали если на точку с запятой заканчиваются
дело в том что в самом запросе ошибок не видно
4 июл 05, 12:56    [1671768]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
tigramax
Member

Откуда:
Сообщений: 21
Ой! Проблема такая. С вышеуказаными запросами разобрался, но почему-то
следующий сразу за ним запрос вылетает с той же ошибкой исполбзую vfp8.
Вот полный текст:
d1 = CTOD(ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate1.Day))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate1.Month))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate1.Year)))
d2 = CTOD(ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate2.Day))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate2.Month))+"."+ALLTRIM(STR(ThisForm.Pageframe1.Page4.OLEDate2.Year)))
Select product_id As pid, sum(nalichie) As ss FROM SKLAD Group BY product_id INTO CURSOR crSklad
Select product_id As pid, sum(amount) As ss FROM ZAKUPKI WHERE date >= d1 AND date <= d2 GROUP BY product_id INTO CURSOR crZak
Select product_id As pid, sum(amount) As ss FROM SALE WHERE date >= d1 AND date <= d2 GROUP BY product_id INTO CURSOR crSale
Select product_id As pid, sum(amount) As ss FROM VOZVRAT WHERE date >= d1 AND date <= d2 Group BY product_id INTO CURSOR crVozvrat
Select product_id As pid, sum(amount) As ss FROM SPISANIE WHERE date >= d1 AND date <=d2 GROUP BY product_id INTO CURSOR crSpisanie
SELECT p.id,;
p.name,;
S.ss As Остаток1,;
p.price As Сумма,;
Sum(Z.ss) As Закуплено,;
Sum(V.ss) As Возврат,;
0 As Приход,;
Sum(SALE.ss) As Продано в сети,;
Sum(SP.ss) As Списано,;
0 As Расход,;
S.ss As Остаток2,;
0 As Сумма;
From PRODUCTS p;
LEFT JOIN crSklad S ON S.pid = p.id;
LEFT JOIN crZak Z ON Z.pid = p.id;
LEFT JOIN crSale SALE ON SALE.pid = p.id;
LEFT JOIN crVozvrat V ON V.pid = p.id;
LEFT JOIN crSpisanie SP ON SP.pid = p.id ;
GROUP BY p.id, p.name, p.price INTO CURSOR crResult
4 июл 05, 13:54    [1672045]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с запросом  [new]
Sergey Sizov.
Guest
А теперь в group by допиши все те поля, которые есть в списке select и в которых при этом не используется SUM().
4 июл 05, 14:25    [1672221]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить