У меня проблема с получением списка полей из запроса, определенного во время выполнения пользователями моей программы. Я позволяю своим пользователям вводить SQL-запрос в элемент управления заметками, а затем я хочу, чтобы они проходили по полям, которые будут возвращаться, и выполняли такие действия, как форматирование вывода, суммирование значений столбца и т. д. Итак, мне нужно получить имена столбцов, чтобы у них было место для ввода дополнительной информации.
Все было бы хорошо, если бы не было параметров, но я также должен позволить им определять параметры фильтра для запроса. Итак, если я хочу установить для параметров значение null, я должен знать тип данных параметра.
Я использую Delphi 2006. Я подключаюсь к базе данных Firebird 2.1, используя компонент DBExpress TSQLConnection и TSQLQuery. Раньше я успешно использовал:
for i := 0 to Qry.Params.Count - 1 do Qry.Params[i].value := varNull;
Я обнаружил, что у меня возникла проблема, когда я попытался использовать параметр даты. Это было просто совпадение, что все мои параметры до этого были целыми числами (идентификаторами записей). Оказывается, varNull — это просто перечисляемая константа со значением 1, поэтому я получал приемлемые результаты (без записей) и работал нормально.
Мне нужен только список полей. Возможно, мне следует просто проанализировать предложение SELECT оператора SQL. Я думал, что установка Qry.Prepared в True даст мне список полей, но не повезло. Ему нужны значения для параметров.
Если у вас есть идея, я обязательно хотел бы ее услышать. Спасибо за любую помощь.