Hola, antetodo bienvenido al ClubDelphi.
Primero échale un vistazo a la
Guía de Estilo y entenderás que el título de tu hilo no es el más idóneo.
En cuanto a tú problema, no veo la solución ahora mismo, pero puedes intentar varias cosas para intentar sacarlo por tí mismo.
- Puedes añadir un breakPoint en la linea donde asignas tu cadena a la variable Query. Llegar hasta el ExecSQL con F8 y ver que contiene Query, eso lo puedes copiar y ejecutar directamente sobre el cliente que tengas instalado de la base de datos y ver si funciona allí.
- El problema quizá esté en el SP, quizá deberías ponerlo aquí para verlo más claro.
- Esto ya es más un consejo:
Código Delphi
[-] if Messagedlg('Está seguro de guardar este registro?', mtwarning, [mbYes,mbNo],0) = mrYes then
begin
Query2.SQL.Clear;
Query2.SQL.Add(query);
Query2.ExecSQL;
Showmessage('Registro guardado en forma correcta');
close
end;
Tras hacer el ExecSQL muestras un mensaje informando de que se ha guardado bien. En tu caso, seguro que te debe aparecer el error de la base de datos y despues el de registro guardado, no?
Quizá deberías encerrar el intento de guardado en un bloque Try Except, algo como esto:
Código Delphi
[-]
if Messagedlg('Está seguro de guardar este registro?', mtwarning, [mbYes,mbNo],0) = mrYes then
begin
try
Query2.SQL.Clear;
Query2.SQL.Add(query);
Query2.ExecSQL;
except
on e:Exception do ShowMessage('Se produjo un erro al guardar el registro: ' + e.message);
end;
close;
end;
Espero te sirva.
Saludos