Для справки.
Что такое FieldDefs?
Когда во время проектирования открыт набор данных (в данном случае этот набор получен после выполнения запроса в SQLQuery), автоматически создаются поля этого набора, данные о которых заносятся в свойство FieldDefs. Именно из-за того, что набор данных открыт в процессе разработки, свойство FieldDefs попало в свойство формы (файл с расширением .lfm). В противном случае, если бы набор данных открывался только после запуска программы на исполнение, этот набор полей создавался бы уже во время выполнения программы не по тем данным, которые содержаться в файле формы, а по данным, полученым после выполнения запроса.
Зачем нужен FiedDefs?
Если выполняется запрос типа "SELECT * FROM таблица", то разработчику от этого свойства ни холодно, ни жарко. Другое дело, когда разработчик сам проектирует, какие поля и в каком виде должен содержать набор данных. В этом случае, отсутствие FieldDefs в файле формы будет полной катастрофой, т.к. после запуска программы будет не то, что вы ожидали увидеть, а то, что создаётся автоматически из данных, полученных после выполнения запроса. К примеру, если выполняется многотабличный запрос, где присутствуют несколько одинаковых, по названию, полей, то на выходе получится вместо:
"Имя человека;Название должности" (для примера
) вот такая билиберда:
"name_a;name_b".
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)