Кавычки в запросе - не работает. Как обойти? #169357


#0 by Dancer
|Условие (Код = "+КодОтбора+");"(использовать прямое представление строки, а не переменную, вынужден потому что запрос выполняется в базе, подключенной по OLE)Примечание: запрос на самом деле посложнее, не хочу загружать сообщение полным текстом.Выполняю запрос при наличии кавычек в строковой переменной НаимОтбора - вываливается ошибка "неизвестная ошибка". Ошибка точно из-за кавычек: если заменяю предваритель кавычки на " " - все проходит.Как обойти?
#1 by Каанкереде
Напиши, что у тебя в НаимОтбора и в КодОтбора
#2 by Юрикс
покажи исходный текст запроса, который не работает
#3 by Dancer
Цель: отобрать по наименованию равному:Аскорбиновая к-та с сах. "Витаминка с сахаром" №10Значение НаимОтбора, вставляемого в вышенаписанный запрос:"Аскорбиновая к-та с сах. ""Витаминка с сахаром"" №10"Это уже собственно содержание строки, кавычки - строковые, это не обозначение границ строки;То есть, результирующая строка запроса выглядит так:|Условие (Наим = "Аскорбиновая к-та с сах. ""Витаминка с сахаром"" №10");КодОтбора:"017464"Примечание: пять запросов перед этим (где НаимОтбора отсутствуют кавычки внутри) - выполняются гладко и так как надо.То есть делаю вывод, что строки вида - катят.
#4 by Dancer
При этом строковые переменные определяются как я в написал
#5 by clue
одинарные кавычки
#6 by Берсеркер
Тут явно методологическая ошибка. почему в запросе идет поиск по наименованию? Юзверь типа вводит наименование с клавиатуры, а не выбирает из списка?
#7 by IchRovan
ага! а можно делать Условие( Найти( НаимОтбора, Наим ) > 0 );
#8 by zzz
афтар, не делай больше так!!!Условие (СокрЛП(Наименование) = """+НаимОтбора+""");но это же изврат!!
#9 by Dancer
не понял была бы совершенно точно методологическая ошибка. если бы все дело было в одной и той же БД. Действия выполняются по OLE-соединению, поэтому юзверь не может выбрать из списка. Кроме того, юзверь тут ваще ни при чем - все происходит в автоматическом режиме, просто ищу в OLE-БД номенклатуру, совпадающую по трем признакам с элементом в текущей БД. Просто по наименованию - не прокатит, элементов с одинаковым наимнованием дофига, подойдет только отбор сразу по трем признакам. не очень красиво, ибо нужно ТОЧНОЕ совпадение, а не включение. Хотя подумаю - условие на длину строки ведь тоже можно поставить... А как ты предлагаешь еще делать, если я не могу ПЕРЕМЕННУЮ напрямую передать через OLE? Или я не так тебя понял?
#10 by Dancer
И какая разница, куда я кавычку, ограничивающую строку, вставлю - в текст запроса или в значение переменной?..
#11 by VZ
Брось свои индейские привычки. Пиши скромно:
#12 by Dancer
Да епрст.повторяю для тех, кто в танке: ВыбрЭлемент - НЕТ ТАКОЙ ПЕРЕМЕННОЙ в OLE-подключенной базе. Если этот элемент выбран в текущей БД - в OLE-БД он НЕДОСТУПЕН.
#13 by zzz
2 так звучит завуалированное "Спасибо" ? Хм..
#14 by Dancer
Проблемы """НаимОтбора""" - не решаетэто у меня стояло с самого началався проблема в том, что например вот у меня номенклатура имеет наименование:Аскорбиновая к-та с сах. "Витаминка с сахаром" №10то есть, содержит кавычки в строке наименованиеКАК сделать так, чтобы запрос воспринимал эти кавычки?Если втупую делать так, как ты написал - не прокатываетесли заменять кавычку на двойную (типа чтобы интерпретатор воспринял это как одинарную кавычку, а не окончание строки) - тоже не прокатываетВОТ в чем весь вопрос-тоЕсли кавычек в наименовании номенклатуры нет - все и так хорошо, все работает так, как ты написал, и мой вариант был изначально именно такой...
#15 by zzz
2(12,14) В ОЛЕ базе элемент ищется по наименованию/коду и уже потом передаётся ссылка на него! А не суётся строка в запрос, как ты НЕРАВИЛЬНО делаешь!Читай: http://www.sinor.ru/~my1c/knowhow/v7&OLE.html
#16 by Dancer
Ага. У меня в OLE - 10 элементов с одним наименованием (код значения не имеет, по ним синхронизации нет). Я найду первый из них. По условию отбора я сразу получу его же. Мне это не надо. Мне нужно среди всех, что имеют такое наименование - отобрать тот, который еще имеет нужную серию и производителя. А не первого.А просто тупо перебором выбирать и проверять - это решение, но я хотел именно запросом. Ибо бывает, что 10 элементов с нужным наименованием, а бывает - 100. И среди них - пятьдесят с нужным производителем, и из этих только один - с нужной серией...
#17 by Dancer
Не прокатывает, пробовал. Та же самая ошибка "Неизвестная ошибка".
#19 by Dancer
сообщает:< Условие (СокрЛП(Наименование) = "Аскорбиновая к-та с сах. ""Витаминка с сахаром"" №10"); >
#20 by zzz
чёто я запутался ..хотя вроде всё прально ..
#21 by Cat
Попробуй вместо кавычек поставить Симв(...) - туда надо номер символа вставить, не помню
#22 by RK
Посмотри в отладчике, чему равно chr
#23 by Dancer
вот и я о том.Впрчоем, всем спасибо - справился. Правда, с извратами :(21, 22)код символа кавычки я найду, не вопрос. Тока щас уже так натрахался с этой лабудой, что пока работает - смотреть не хочу, не то чтобы оптимизировать. :((((
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям