Неопределенный идентификатор
Доброго времени суток!
Столкнулся со следующей ситуацией:
Есть листбокс на диалоговой форме, который при создании формы заполняется строковыми значениями из колонки типа widestring одной из таблиц бд ( сервер фаербирд 2.5.2 ). При выборе одного из элементов листбокса вызывается процедура которая присваивает переменной отчета.
Далее в отчете есть запрос к бд, в котором одним из условий является равенство содержимого колонки типа widestring переменной 'ShiftHost'
В параметрах запроса :ShiftHost привязан к переменной отчета 'ShiftHost' с указанием типа widestring.
При выполнении отчета вылетает ошибка: Были обнаружены следующие ошибки: QGSM:QGSM: Ошибка в выражении 'OPERATOR': Неопределенный идентификатор:'OPERATOR'.
где 'OPERATOR' - содержание переменной ShiftHost и меняется если ткнуть другой итем в листбоксе
QGSM - имя запроса, в котором происходит сравнение.
Аналогичную ошибку ( неопределенный идентификатор) ловил когда просто в отчет вставлял мемо с содержанием этой переменной.
Помогите разобраться в чем проблема? Как исправить или обойти.
Столкнулся со следующей ситуацией:
Есть листбокс на диалоговой форме, который при создании формы заполняется строковыми значениями из колонки типа widestring одной из таблиц бд ( сервер фаербирд 2.5.2 ). При выборе одного из элементов листбокса вызывается процедура которая присваивает переменной отчета.
procedure Label3OnClick(Sender: TfrxComponent);
begin
Set('ShiftHost' , ListBox3.Items[ListBox3.ItemIndex]);
end;
Далее в отчете есть запрос к бд, в котором одним из условий является равенство содержимого колонки типа widestring переменной 'ShiftHost'
G.HOST =(:ShiftHost)
В параметрах запроса :ShiftHost привязан к переменной отчета 'ShiftHost' с указанием типа widestring.
При выполнении отчета вылетает ошибка: Были обнаружены следующие ошибки: QGSM:QGSM: Ошибка в выражении 'OPERATOR': Неопределенный идентификатор:'OPERATOR'.
где 'OPERATOR' - содержание переменной ShiftHost и меняется если ткнуть другой итем в листбоксе
QGSM - имя запроса, в котором происходит сравнение.
Аналогичную ошибку ( неопределенный идентификатор) ловил когда просто в отчет вставлял мемо с содержанием этой переменной.
Помогите разобраться в чем проблема? Как исправить или обойти.
Комментарии
Поэтому в параметрах запроса надо указывать эту переменную в косых скобках, т.е. так: <ShiftHost>
Если это не поможет, то попробуйте вместо
Set('ShiftHost' , ListBox3.Items[ListBox3.ItemIndex])
писать
Set('ShiftHost' , CHR(39)+ListBox3.Items[ListBox3.ItemIndex]+CHR(39))
т.е. заключит строку в дополнительные одинарные кавычки.
Спасибо. CHR(39) помогло.
Правда теперь столкнулся с другой проблемой:
Есть 2 запроса к разным таблицам в одной базе.
В запросе есть условие возвращать записи находящиеся в пределах дат с Х по У. Переменные определяющие Х и У так же задаются через листбокс диалогового окна. Параметры переменных указаны в обоих запросах одинаково. Поля в таблицах баз данных с временем имеют одинаковый тип DateTime и представление "дд:мм:гггг чч:мм:сс". В одном запросе выборка выполняется правильно, во втором будто записей удовлетворяющих указанным временным рамкам - нет. хотя по факту записи есть
условия указаны следующим образом: для первой и
во втором случае пробовал даже так:
все ровно возвращает NULL, хотя, повторюсь, записи в указываемых промежутках времени по факту в таблице есть ( без указания условия по временным рамкам запрос отрабатывает, возвращая все записи удовлетворяющие остальным условиям, в том числе и со временем входящим в рамки предаваемых переменных <ShiftFrom> <ShiftTo>)
Обескураживает то что в другом запросе все работает как надо. В параметрах запроса переменные указаны одинаково.
Переменные присваиваю следующим образом: листбоксы заполняются при активации диалогового окна по запросу из таблицы T.SHIFTFROM, т.е той с который запрос на выборку по дате работает на ура.
то есть 1 таблица хранит за весь период работы приложения в обобщенном виде, 2я только за определенный период времени от настоящего, но развернуто. то есть я просто выбирал из первой тот период, который отсутствовал во второй. Запрос работал как надо, просто не обратил внимание на содержание второй таблицы... внимательнее нужно быть ))))
Всем спасибо за участие )