Se están como enrredando me parece. La única inconsistencia que veo es que OD es el mismo OpenDialog1. De esta manera el código quedaría así:
Código:
if (OpenDialog1.Execute) then begin
if (Tabla.State <> dsBrowse) then
Tabla.Edit;
TablaFOTO.LoadFromFile(OpenDialog1.FileName);
Tabla.Post;
end;