Saludos
Por lo que veo estas intentado guardar un dato de clave primaria duplicado o un index unico que ya existe
para que te muestre el mensaje que quieres debes capturar el erro de la base de datos así :
En el evento dberror del datawindow
si el motor es SqlAnywhere
CHOOSE CASE sqldbcode
CASE -194 // Value not found in a parent table.
MessageBox("Error", "Error al grabar en una de las columnas proveniente de otra tabla. Fila " + string(row), StopSign!)
CASE -193 // Value de Clave Primaria
MessageBox("Error", "Clave Primaria repetida. Fila " + string(row), StopSign!)
CASE 1 // Repeated primary key.
MessageBox("Error", "Error al grabar. Se ha repetido la(s) columna(s) principal(es). Fila " + string(row), StopSign!)
CASE 1400 // Null value found.
MessageBox("Error", "Error al grabar. Le falta ingresar un valor en la fila " + string(row), StopSign!)
CASE -195
messageBox("Error","Faltan campos por llenar Fila " + string(row)/*String(sqldbcode)+" "+sqlerrtext*/, StopSign!)
END CHOOSE
RETURN 1
espero que te sirva