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



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Как правильно задать условие в запросе?
03. Июля 2007 :: 07:43
Печать  
Код
Выбрать все
//++ Обрабатываем документы
КолДок = Метаданные.Документ();
Для Поз = 1 По КолДок Цикл
   Ид = Метаданные.Документ(Поз).Идентификатор;
   Состояние("Обработка документа: " + Ид + " (" + Строка(Цел(Поз / КолДок * 100)) + " %)");
   Если Метаданные.Документ(Поз).РеквизитТабличнойЧасти("Товар").Выбран() = 1 Тогда
     //++ Обрабатываем очередной документ
     глЗапрос.УстановитьТекстовыйПараметр("ТоварПоиска",ВыбТовар1);
     глЗапрос.УстановитьТекстовыйПараметр("ТоварЗамены",ВыбТовар2);
     глТекст = "
     |IF EXISTS (SELECT COUNT(ID) FROM $ДокументСтроки." + Ид + " WHERE $ДокументСтроки." + Ид + ".Товар = :ТоварПоиска)
     |BEGIN
     |EXEC('
     |UPDATE
     |		$ДокументСтроки." + Ид + "
     |SET
     |		$ДокументСтроки." + Ид + ".Товар = :ТоварЗамены
     |WHERE
     |		$ДокументСтроки." + Ид + ".Товар = :ТоварПоиска
     |')";

     //глЗапрос.Отладка(1);
     глЗапрос.ВыполнитьИнструкцию(глТекст);
   КонецЕсли;
КонецЦикла;
 



Ошибка:
Код
Выбрать все
глЗапрос.ВыполнитьИнструкцию(глТекст);
{F:\SHOPS\SHOP101\EXTFORMS\_ЗАМЕНАТОВАРА.ERT(42)}: FAILED! ICommandText::Execute(): Function name is missing ).
 



Как правильно задать условие? Или все-таки быстрее будет без него?
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как правильно задать условие в запросе?
Ответ #1 - 03. Июля 2007 :: 08:57
Печать  
Строку подключения нужно поглядеть.
  
Наверх
ICQ  
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Как правильно задать условие в запросе?
Ответ #2 - 04. Июля 2007 :: 07:44
Печать  
Кусок кода со строкой подключения:
Код
Выбрать все
MetaInfo = СоздатьОбъект("MetaInfoClasses");
ЭтоSQL = MetaInfo.ЭтоSQL_Версия();
Если ЭтоSQL = 0 Тогда
	База = СоздатьОбъект("OLEDBData");
	Соединение = "Provider = VFPOLEDB.1;Deleted = Yes;Data Source = " + КаталогИБ()+ ";Mode = ReadWrite;Extended Properties = "";User ID = "";Password = "";Mask Password = False;Collating Sequence = RUSSIAN;DSN = """;
	Рез = База.Соединение(Соединение);
	глЗапрос = База.СоздатьКоманду();
Иначе
	Предупреждение("Работа обработки возможна только в базе формата DBF!");
	СтатусВозврата(0);
	Возврат;
КонецЕсли;
 

  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как правильно задать условие в запросе?
Ответ #3 - 04. Июля 2007 :: 10:06
Печать  
Синтаксис текста твоего запроса соответствует синтаксису запросов VFP?
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Как правильно задать условие в запросе?
Ответ #4 - 04. Июля 2007 :: 10:52
Печать  
По моему такое в фоксе не проканает это вам не MS SQL, перепиши
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать