Тоже вставляет все поля, но нужно сделать какие нибудь манипуляции в чертеже чтобы поля обновились и вместо "####" появились нужные результаты
Database.EvaluateFields() позволяет обновить поля.
Но в твоём случае tbl1.Cells[2, 2].FieldId = id; недостаточно. Всё равно нужно присвоить tbl1.Cells[2, 2].TextString
А не подскажите для чего тогда метод SetField класса DBObject применяется?
Это если у объекта одно поле. Повторный вызов SetField переопределяет поле объекта.