if not (dmkunden.tblkundendaten.State in [dsInsert]) then
Ich weiss nicht, ob das zur Problemlösung beiträgt, aber ich würde hier dringend umdrehen:
if not (dsInsert in dmkunden.tblkundendaten.State) then
Das gleiche auch später nochmals. Grund: Bei deiner Variante wird nur "true" erzielt, wenn "State=dsInsert", du möchstet aber eigentlich "dsInsert ist Teilmenge von State". (Ich vermute in dem 2. Vorkommen dieser Prüfung ist "State" = [dsInsert, dsEditing] oder so, weswegen das einen Unterschied machen könnte.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)