Av - Изменившийся запрос и колонки датасета
Бывают ситуации, когда запрос в датасете изменил, а fieldAliases почему-то нет (или делаешь SELECT * from table, а там какого-либо поля уже нет) - т.е. ситуация, когда запрос возвращает не то количество полей, которые прописаны в TFrxDataset (или его потомках) - то в этом случае не возникает сообщение "нет поля имя такое-то", а просто валится AV-шник, что неприятно.
Можно ли пофиксить эту ситуацию?
Я походил отладчиком, но это для меня тяжело - слишком большой код, системы и идей которого я не понимаю.
Вопрос, наверное, больше к службе поддержки (могу и там открыть вопрос, если необходимо).
Спасибо
С уважением, Андрей
Можно ли пофиксить эту ситуацию?
Я походил отладчиком, но это для меня тяжело - слишком большой код, системы и идей которого я не понимаю.
Вопрос, наверное, больше к службе поддержки (могу и там открыть вопрос, если необходимо).
Спасибо
С уважением, Андрей
Комментарии
Я бы сделал две проверки:
procedure TfrxDBDataset.AfterOpen(Sender: TDataset);
var
i: Integer;
begin
GetFieldList(Fields);
for i := 0 to Fields.Count - 1 do
Fields.Objects := FDS.FindField(ConvertAlias(Fields));
здесь Fields.Objects на Nil с выдачей сообщения
и
function TfrxDBDataset.GetValue(Index: String): Variant;
var
i: Integer;
v: Variant;
begin
if not FInitialized then
Open;
i := Fields.IndexOf(Index);
if i <> -1 then
begin
if Fields.Objects = Nil then
v := Null
и /или здесь проверку Fields.Objects = Nil