En las primeras líneas creo que abres y cierras la tabla varias veces
Código Delphi
[-]with DM.tblMKard do
begin
if not Active then
Active := true;
DM.dsMKard.DataSet := nil;
Close;
Open;
[...]
Quizás eso moleste un poco a la tabla y no se entere bien de cual es el contador que le toca.
Tambien parece que quitas la propiedad DataSet a un DataSource.
Si lo que quieres es que los componentes visuales no se enteren, deberías hacerlo con un Disable/EnableControls
Código Delphi
[-]with DM.tblMKard do
begin
DisableContros
if not Active then
Active := true;
Insert;
[...]
Post;
EnableControls;
end;
[...]
Y finalmente puede ser que la tabla no esté en estado dsBrowse al momento de insertar, aunque creo que daría algún otro error
Código Delphi
[-]with DM.tblMKard do
begin
DisableContros
if not Active then
Active := true;
if (state = dsBrowse) then
begin
Insert;
[...]
Post;
end else
EnableControls;
end;
[...]