Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   no deja guardar 2 veces (https://www.clubdelphi.com/foros/showthread.php?t=78525)

edgar_prospero 26-04-2012 18:42:27

no deja guardar 2 veces
 
que hay amigos aqui con una dudilla haber si me pueden ayudar tengo un codigo que ahorita voy a mostrar donde puedo guardar registros y en caso de que ya exista me los actualiza cuando hago el procedimiento de guardar o actualizar por primera vez todo muy bien si hace el trabajo pero si lo quiero hacer de nuevo me marca un error raised exeption class EMysqlexeption with message (entre otras cosas no se si sea importante ponerlas)

Código Delphi [-]
procedure TForm1.guardarClick(Sender: TObject);
begin
tabla.Close;

tabla.SQL.Clear;

tabla.SQL.Add('insert into datos(folio, nombre, fecha, estado,problema,resuelto) values(:pfolio, :pnombre, :pfecha, :pestado, :pproblema,:presuelto)');

tabla.ParamByName('pfolio').AsString:=folio.Text;
tabla.ParamByName('pnombre').AsString:=nombre.Text;
tabla.ParamByName('pfecha').AsDate:=fecha.DateTime;
tabla.ParamByName('pestado').AsString:=estado.Text;
tabla.ParamByName('pproblema').AsString:=problema.Text;
tabla.ParamByName('presuelto').Asstring:=nombre.Text;
tabla.Execute;

  showmessage('grabado con exito');
end;

TiammatMX 26-04-2012 19:00:26

Cita:

Empezado por edgar_prospero (Mensaje 431111)
Código Delphi [-]procedure TForm1.guardarClick(Sender: TObject); begin tabla.Close; tabla.SQL.Clear; tabla.SQL.Add('insert into datos(folio, nombre, fecha, estado,problema,resuelto) values(:pfolio, :pnombre, :pfecha, :pestado, :pproblema,:presuelto)'); tabla.ParamByName('pfolio').AsString:=folio.Text; tabla.ParamByName('pnombre').AsString:=nombre.Text; tabla.ParamByName('pfecha').AsDate:=fecha.DateTime; tabla.ParamByName('pestado').AsString:=estado.Text; tabla.ParamByName('pproblema').AsString:=problema.Text; tabla.ParamByName('presuelto').Asstring:=nombre.Text; tabla.Execute; showmessage('grabado con exito'); end;

Pues así, a primera vista, parecería que estás duplicando el registro..., o alguno de tus parámetros está entrando con valor nulo.

Cita:

Empezado por edgar_prospero (Mensaje 431111)
... un error raised exeption class EMysqlexeption with message (entre otras cosas no se si sea importante ponerlas)...

¡¡PERO CLARO QUE ES IMPORTANTÍSIMO DOCUMENTAR LOS ERRORES QUE TE MANDA TU DESARROLLO!! ¿O cómo esperas que te orientemos si no conocemos el problema? Al menos yo, no soy adivino...

edgar_prospero 26-04-2012 19:53:25

jajaja ok ok tienes toda la razon hay va el mensaje completo haber si me pueden orientar en mi problema raised exeption class EMysqlexeption with message
#42000 you have an error in your SQL syntax; check the manual that corresponds to your mysql server version for the right syntax to use near 'insert into datos(folio, nombre, fecha, estado, problema, resuelto) value ('3', 'jo' at line 2

ecfisa 26-04-2012 20:02:53

Hola edgar.

Revisá si te puede servir este enlace

Saludos.

edgar_prospero 26-04-2012 20:15:35

ese enlace segun entendi habla sobre el uso de palabras reservadas pero creo que ese no es mi caso porque al correr el programa y guardar no hay problema el asunto viene cuando limpio los edit e intento guardar otro registro es cuando viene el error

Casimiro Noteví 26-04-2012 20:29:05

Es que tienes que dar mucha más información, así sólo podemos estar intentando adivinar ;)

Por ejemplo:
  • 'folio' ¿es un campo numérico o de texto?
  • Se supone que algún campo de esos es clave primaria, ¿cual?.

edgar_prospero 26-04-2012 20:30:29

muchas gracias por su tiempo y ayuda encontre mi error a la hora de limpiar los edit le agregue
tabla.SQL.Clear;
y ya con eso no me marca el error y ya me permite guardar y actualizar informacion

Casimiro Noteví 26-04-2012 20:35:24

Cita:

Empezado por edgar_prospero (Mensaje 431134)
muchas gracias por su tiempo y ayuda encontre mi error a la hora de limpiar los edit le agregue
tabla.SQL.Clear;
y ya con eso no me marca el error y ya me permite guardar y actualizar informacion

Eso ya lo hacías antes, ahí está el código ;)

Además que eso no puede ser :)

ecfisa 26-04-2012 20:36:09

Hola Edgar.

Aunque no uso mysql, eso fué lo primero que se me vino a la cabeza, pero como en tu código incial dice:
Código Delphi [-]
procedure TForm1.guardarClick(Sender: TObject);
begin
tabla.Close;

tabla.SQL.Clear;  // << ==
...
Lo descarté.

Saludos.

edgar_prospero 26-04-2012 20:37:50

si yo se que en el codigo que muestro ahi esta pero mi problema se soluciono cuando le agregue eso a un boton que llame limpiar
y si con eso se soluciono mi problema

Código Delphi [-]
procedure TForm1.limpiarClick(Sender: TObject);
begin

folio.Clear;
nombre.Clear;
estado.Clear;
problema.Clear;
folio.SetFocus;
  tabla.SQL.Clear;

edgar_prospero 26-04-2012 20:39:50

gracias ecfisa y pues si yo tambien no lo habia agregado a la hora de limpiar porque ya lo tenia en ese proceso pero despues de estar intentando pues al fin quedo muchas gracias y hay los seguire molestando cuando me vuelva a surgir mas problemas

Casimiro Noteví 26-04-2012 20:41:58

Bueno, nunca nos enteraremos, pero está claro que eso no puede ser así, salvo que hayas puesto aquí un código que no es realmente el que estás usando :)

edgar_prospero 26-04-2012 20:45:51

que pues amigo te estoy siendo sincero eso que puse es el mismo codigo que estoy usando y con lo que te dije se soluciono mi problema no tengo porque mentir y si tienes tantas dudas de lo que digo pues intenta implementarlo a ver si te marca el mismo error a ti

Casimiro Noteví 26-04-2012 20:49:29

Nadie ha dicho que mientas :eek:
Seguramente has cambiado alguna otra cosa y después has puesto eso en 'limpiarclick' y ha funcionado, pero no por eso, sino por lo que hayas hecho antes.

edgar_prospero 26-04-2012 20:56:45

Casimiro Notevi me dejaste pensando y quite esa linea de codigo y me marco el error y se la puse y ya sin problema
codigo para guardar la informacion

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin;

tabla.Close;
tabla.SQL.Add('insert into datos(folio, nombre, fecha, estado, problema,resuelto)values(:pfolio, :pnombre, :pfecha, :pestado, :pproblema,:presuelto) on duplicate key update nombre=:pnombre,fecha=:pfecha, estado=: pestado, problema=: pproblema,resuelto=:presuelto');
tabla.ParamByName('pfolio').AsString:=folio.Text;
tabla.ParamByName('pnombre').AsString:=nombre.Text;
tabla.ParamByName('pfecha').AsDate:=fecha.DateTime;
tabla.ParamByName('pestado').AsString:=estado.Text;
tabla.ParamByName('pproblema').AsString:=problema.Text;
tabla.ParamByName('presuelto').Asstring:=nombre.Text;
tabla.Execute;

  tabla.SQL.Clear;

  showmessage('grabado con exito ');
end;

codigo para limpiar la informacion es a lo unico que le he podido mover desde que puse mi pregunta y asi es como lo tengo actualmente

Código Delphi [-]
procedure TForm1.limpiarClick(Sender: TObject);
begin

folio.Clear;
nombre.Clear;
estado.Clear;
problema.Clear;
folio.SetFocus;
  tabla.SQL.Clear;


La franja horaria es GMT +2. Ahora son las 22:15:11.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi