Av - Изменившийся запрос и колонки датасета

отредактировано 17:02 Раздел: FastReport 4.0
Бывают ситуации, когда запрос в датасете изменил, а fieldAliases почему-то нет (или делаешь SELECT * from table, а там какого-либо поля уже нет) - т.е. ситуация, когда запрос возвращает не то количество полей, которые прописаны в TFrxDataset (или его потомках) - то в этом случае не возникает сообщение "нет поля имя такое-то", а просто валится AV-шник, что неприятно.
Можно ли пофиксить эту ситуацию?
Я походил отладчиком, но это для меня тяжело - слишком большой код, системы и идей которого я не понимаю.
Вопрос, наверное, больше к службе поддержки (могу и там открыть вопрос, если необходимо).
Спасибо
С уважением, Андрей

Комментарии

  • отредактировано 17:02
    Полистал еще и кое-что нарыл:

    Я бы сделал две проверки:
    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

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.