Access 2002

Использование символов подстановки            


Одна маленькая проблема: Access и ADO не всегда допускают использование символов подстановки в SQL-строках. Если у вас есть запрос с предложением LIKE, в котором употребляются символы «» и «?», Access аккуратно заменит их символами «%» и «_», применение которых разрешено ADO. Однако если такой запрос непосредственно указать в свойстве RowSource, ADO интерпретирует эти символы как литералы, и запрос не сработает. Мы, правда, могли бы написать код, который обрабатывает литералы в свойстве RowSource, но это чревато увеличением размера модуля класса вдвое. Если хотите, можете самостоятельно написать такой код. Он должен просматривать SQL-строку в поиске предложений WHERE и заменять в них все символы «» и «?» символами «%» и «_» соответственно. Однако проще написать в документации класса, что применение символов подстановки допускается только в сохраненных запросах.

Поскольку запросы могут иметь параметры, нам нужно позаботиться о том, как их предоставлять. Часто запросы берут значения своих параметров из форм. Но, как говорилось в главе 5, невозможно программным путем создать объект Recordset на основе запроса с параметрами, если не «зашить» значения этих параметров в программный код. Мы попытались сделать так, чтобы класс IncrementalSearch обрабатывал хотя бы запросы с простейшими параметрами. Так вот, если у вашего запроса такой параметр, как ниже, класс его обработает:

Like [Forms]![ForrnName]![ControlName]

Если запрос имеет подобный параметр, ADO (или DAO) добавляет его в коллекцию Parameters объекта Command (или QueryDef). Коллекция Parameters включает объекты Parameter, у которых есть свойства Name и Value. Программный код должен пройти в цикле по всем этим объектам и попытаться присвоить свойству Value каждого из них значение соответствующего параметра.

Комментарии закрыты