kos писал(а) 25. Августа 2013 :: 20:28:Можно ли во все методы объекта ODBCRecordset
которые отвечают за установку параметров в запрос
для строковых данных добавить автозамену одинарной кавычки <'> на ее дубль <''>
чтобы каждый раз перед выполнением запроса не манипулировать <СтрЗаменить(..)>
Ведь забыть такую замену сделать очень легко....
1) можно - исходники есть; но кто это будет делать?
kos писал(а) 25. Августа 2013 :: 20:28:Реквизитов типа <строка(х)> в любой БД ОООчень много
2) Реквизитов - много, а обоснованного использования одинарных кавычек? Разве что спецификой базы является больше количество зарубежных контрагентов.
kos писал(а) 25. Августа 2013 :: 20:28:и для каждого запроса по каждому реквизиту в условиях
не забыть сделать такую замену средствами 1С
- ну оооочень напрягает.....
Дык, напиши свой маленький класс-наследник от ODBCRecordset, в котором переопредели необходимые методы.
(например, так:
Процедура УстановитьТекстовыйПараметр(Имя, Значение) Экспорт
ЗначениеСЭскейпами = СтрЗаменить(Значение, "'", "''"); // в идеале - сделать грамотный парсинг, типо чтоб проверять наличие "внутренных" одинарных кавычек и эскейпать их только в этом случае
Сам(Контекст).ПолучитьБазовыйКласс().УстановитьТекстовыйПараметр(Имя, ЗначениеСЭскейпами);
КонецПроцедуры
)
Если для массовых (точнее, всех, кроме параметризированных с Подготовить()) запросов используешь глобальную переменную с объектом ОДБЦРекордсет - то тут вообще все примитивно и немного гемороя создаст переписываение использования других экземпляров ОДБЦРекордсет
Если для каждого запроса создаешь свой объект ОДБЦРекордсет - то самое время переписать все на вариант с глобальной переменной.