Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема что не так?!! (число прочтений - 4020 )
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
что не так?!!
08. Декабря 2006 :: 17:02
Печать  
пытаюсь написать мой первый "прямой" запрос.
задача - вычислить количество элементов в группе товаров
Функция получитьКоличествоПозиций(группаТов)
    Перем ТекстЗапроса;
     
     ТекстЗапроса = "
|SELECT
|   Спр.ID as [Элемент $Справочник.Номенклатура]
|FROM
|      $Справочник.Номенклатура as Спр
|WHERE
|      Спр.IsFolder = 2 AND
|      Спр.IsMark = ''
|   Спр.ID IN (SELECT Val FROM #Группа)";

RS.УложитьСписокОбъектов(группаТов, "#Группа","Номенклатура");
     
     //тз_11 =СоздатьОбъект("ТаблицаЗначений");
     тз_11 = RS.ВыполнитьИнструкцию(ТекстЗапроса);
           
     Возврат тз_11.количествоСтрок();
                             
КонецФункции

при выполнении пишет такое:
тз_11 = RS.ВыполнитьИнструкцию(ТекстЗапроса);

FAILED! ICommandText::Execute(): Command contains unrecognized phrase/keyword.
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
smile
Junior Member
**
Отсутствует


бррр... ужас...

Сообщений: 50
Зарегистрирован: 23. Мая 2006
Re: что не так?!!
Ответ #1 - 09. Декабря 2006 :: 06:23
Печать  
Вот эта штука мне не нравится Улыбка

Спр.IsMark = ''

попробуй ее закомментировать.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: что не так?!!
Ответ #2 - 09. Декабря 2006 :: 06:56
Печать  
Имя временной таблицы формирует метод УложитьСписокОбъектов() - это будет guid.
т.е. не ты указываешь имя, а тебе говорят какое оно будет и дальше используешь его.
зы: я так понял, что запрос выполняется через oledb (а понял я это по ошибке "FAILED! ICommandText::Execute()").
  
Наверх
ICQ  
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: что не так?!!
Ответ #3 - 09. Декабря 2006 :: 18:58
Печать  
честно говоря я первый раз пытаюсь написать прямой запрос. стараюсь максимум скопировать из документации acsent' а. может просто подскажите как должен выглядеть запрос для решения моей задачи.
а база действительно ДБФ.
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: что не так?!!
Ответ #4 - 09. Декабря 2006 :: 21:05
Печать  
попробовал так:
     ТекстЗапроса = "
|SELECT
|   Спр.ID as [Элемент $Справочник.Номенклатура]
|FROM
|      $Справочник.Номенклатура as Спр
|WHERE
|      Спр.IsFolder = 2";// AND
//|      Спр.IsMark = '' AND
//|   Спр.ID IN (SELECT Val FROM #Группа)";


//RS.УложитьСписокОбъектов(группаТов, "#Группа","Номенклатура");

тз_11 = RS.ВыполнитьИнструкцию(ТекстЗапроса);

получилось.

подскажите в чем дело!!! нужно как то фильтровать по группам!      
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: что не так?!!
Ответ #5 - 10. Декабря 2006 :: 14:36
Печать  
spock писал(а) 09. Декабря 2006 :: 06:56:
Имя временной таблицы формирует метод УложитьСписокОбъектов() - это будет guid.
т.е. не ты указываешь имя, а тебе говорят какое оно будет и дальше используешь его.
зы: я так понял, что запрос выполняется через oledb (а понял я это по ошибке "FAILED! ICommandText::Execute()").


ничего не понял. что нужно подправить?
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: что не так?!!
Ответ #6 - 10. Декабря 2006 :: 14:38
Печать  
сделал так:
     ТекстЗапроса = "
|SELECT
|   Спр.ID as [Элемент $Справочник.Номенклатура]
|FROM
|      $Справочник.Номенклатура as Спр
|WHERE
|      Спр.IsFolder = 2 AND
//|      Спр.IsMark = '' AND";
|   Спр.ID IN (SELECT Val FROM #Группа)";


RS.УложитьСписокОбъектов(группаТов, "#Группа","Номенклатура");

тз_11 = RS.ВыполнитьИнструкцию(ТекстЗапроса);


заругалось следующим образом:
FAILED! ICommandText::Execute(): File '#Группа.dbf' does not exist.
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: что не так?!!
Ответ #7 - 10. Декабря 2006 :: 15:14
Печать  
Вместо
Код
Выбрать все
RS.УложитьСписокОбъектов(группаТов, "#Группа","Номенклатура");
 



Напиши:
Код
Выбрать все
ВременнаяТаблица = "Группа";
RS.УложитьСписокОбъектов(группаТов, ВременнаяТаблица,"Номенклатура");
 


После выполнения в переменной ВременнаяТаблица будет название временной таблицы, куда были выгружены элементы справочника.

Далее запрос меняешь таким образом:
Код
Выбрать все
   Спр.ID IN (SELECT Val FROM :ВременнаяТаблица)";
 



и добавляешь такой код перед "ВыполнитьИнструкцию":
Код
Выбрать все
RS.УстановитьТекстовыйПараметр ("ВременнаяТаблица", ВременнаяТаблица);
 



Примерно, в таком вот "аксепте" Улыбка
  
Наверх
 
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: что не так?!!
Ответ #8 - 10. Декабря 2006 :: 15:25
Печать  
to Uzhast
огромное спасибо!!!
работает!!!!!
если б мог - налил бы чего то !!!
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
Владимир1717
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 6
Зарегистрирован: 27. Января 2010
Re: что не так?!!
Ответ #9 - 27. Января 2010 :: 14:21
Печать  
С удовольствием налил бы тоже...
Делаю всё как написано, результат:
Internal error:
State 42000, native 219, message [Microsoft][ODBC Visual FoxPro Driver]Command contains unrecognized phrase/keyword.

а это сообщение об ошибке:

State 42S02, native 173, message [Microsoft][ODBC Visual FoxPro Driver]File 'временнаятаблица.dbf' does not exist.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать