Delphi XE10, не может редактировать значения полей пустого TQuery

У меня есть набор данных, объект TQuery со свойством Requestlive=TRUE, Tdatasource и TDBgrid, связанных. Когда запрос возвращается пустым, я сталкиваюсь с этой проблемой: пытаясь добавить первую запись, я не могу редактировать ее поля. После сохранения этой (пустой) первой записи я могу продолжить в обычном режиме (добавление, редактирование и т. Д.). Что я могу сделать, чтобы избежать этой проблемы, пожалуйста?

1 ответ

Я не нашел причину, которая вызывает эту проблему, но я сделал этот обходной путь:

procedure TFormA.QueryNewRecord(DataSet: TDataSet);
begin
    case Query.RecordCount of
        0 : begin // if dataset is empty then append a fake record
                Query.fieldByname('aDate').AsDateTime := now;
                Query.fieldByname('fieldA').AsFloat := 0; // fieldA is a mantatory field 
                Query.Post;
            end;
        else Query.fieldByname('aDate').AsDateTime := now; 
    end;
end;

и в событии onCloseForm я добавляю это:

Query.SQL.Text := 'DELETE FROM NOTES WHERE fieldA=0';
Query.ExecSQL;

удалить любую фальшивую запись, добавленную таким образом

Другие вопросы по тегам