Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema al hacer update (https://www.clubdelphi.com/foros/showthread.php?t=85857)

gplata 15-05-2014 21:53:48

Problema al hacer update
 
Buenas tardes,
tengo el siguiente problema:
al ejecutar un store procedure que hace un update me marca el siguiente error: La operación de multiples pasos de OLE DB generó errores.
Al hacer insert no hay problemas, solo con el update, esto es lo que estoy ejecutando en Delphi 7, estoy usando ADO conecction y MySQL ODBC connector 5.2, espero me puedan ayudar, gracias
Código Delphi [-]
      spacproyecto.Close;
      spacproyecto.Parameters.ParamByName('xtipomov').Value:='A';
      spacproyecto.Parameters.ParamByName('xidproyecto').Value:=form1.spgridproyectosid_proyecto.AsInteger  ;
      spacproyecto.Parameters.ParamByName('xconsecutivo').Value:=edconsecutivo.Text;
      spacproyecto.Parameters.ParamByName('xasg').Value:=edasg.Text;
      spacproyecto.Parameters.ParamByName('xa').Value:=eda.Text;
      spacproyecto.Parameters.ParamByName('xb').Value:=edb.Text;
      spacproyecto.Parameters.ParamByName('xstatus').Value:=edstatus.Text;
      spacproyecto.Parameters.ParamByName('xproyecto').Value:=ednomproyecto.Text;
      spacproyecto.Parameters.ParamByName('xelectrico').Value:=spcombotransformer.fieldbyname('idcat_trans  formadoresdeaislamiento').Value;
      spacproyecto.Parameters.ParamByName('xestructura').Value:=spcbestructura.fieldbyname('idcat_estructu  ra').Value;
      spacproyecto.Parameters.ParamByName('xaltura').Value:=edaltura.Text;
      spacproyecto.Parameters.ParamByName('xacceso').Value:=spcbacceso.fieldbyname('idcat_acceso').Value;
      spacproyecto.Parameters.ParamByName('xubicacion').Value:=spcbciudades.fieldbyname('idcat_municipio')  .Value;
      spacproyecto.Parameters.ParamByName('xcliente').Value:=spcbclientes.fieldbyname('idcat_clientes').Va  lue;
      spacproyecto.Parameters.ParamByName('xcotizacion').Value:=edcotizacion.Text;
      spacproyecto.Parameters.ParamByName('xrealizacion').Value:=edrealizacion.Date;
      spacproyecto.Parameters.ParamByName('xpr_numero').Value:=edprnum.Text;
      spacproyecto.Parameters.ParamByName('xsolicitud_pr').Value:=edsolicitapr.Date;
      spacproyecto.Parameters.ParamByName('xliberacion_pr').Value:=edliberapr.Date;
      spacproyecto.Parameters.ParamByName('xnumero_po').Value:=ednumpo.Text;
      spacproyecto.Parameters.ParamByName('xsolicitut_po').Value:=edsolicitapo.Date;
      spacproyecto.Parameters.ParamByName('xliberacion_po').Value:=edliberapo.Date;
      spacproyecto.Parameters.ParamByName('xnumero_gr').Value:=ednumgr.Text;
      spacproyecto.Parameters.ParamByName('xsolicitud_gr').Value:=edsolicitagr.Date;
      spacproyecto.Parameters.ParamByName('xliberacion_gr').Value:=edliberagr.Date;
      spacproyecto.Parameters.ParamByName('xfacturado').Value:=edfacturado.Text;
      spacproyecto.Parameters.ParamByName('xacumulado').Value:=edacumulado.Text;
      spacproyecto.Parameters.ParamByName('xingreso_fact').Value:=edingresofac.Date;
      spacproyecto.Parameters.ParamByName('xnumero_fact').Value:=ednumfac.Text;
      spacproyecto.Parameters.ParamByName('xpago_fact').Value:=edpagofac.Date;
      spacproyecto.Parameters.ParamByName('xstatus_proyecto').Value:=spcbestatus.fieldbyname('idcat_estatu  sproyecto').Value;
      spacproyecto.Parameters.ParamByName('xtipo_pago').Value:=spcbtipopago.fieldbyname('idcat_tipo_pago')  .Value;
      spacproyecto.Parameters.ParamByName('xrecepcion_pago').Value:=edrecepago.Date;
      spacproyecto.Parameters.ParamByName('xbalance_proyecto').Value:=edbalance.Text;
      spacproyecto.Parameters.ParamByName('xcaptura').Value:=spcbempleados.fieldbyname('idcat_empleados').  AsString;
      spacproyecto.Parameters.ParamByName('xobservaciones').Value:=edobservaciones.Text;
      spacproyecto.ExecProc;
y el stored procedure de mysql es el sigiuiente:
Código SQL [-]
CREATE DEFINER=`root`@`%` PROCEDURE `spacproyecto`(`xtipomov` varchar(1),
`xidproyecto` int,
`xconsecutivo` varchar(50),
`xasg` varchar(45),
`xa` varchar(45),
`xb` varchar(45),
`xstatus` varchar(45),
`xproyecto` varchar(245),
`xelectrico` smallint,
`xestructura` smallint,
`xaltura` varchar(45),
`xacceso` int,
`xubicacion` int,
`xcliente` int,
`xcotizacion` varchar(145),
`xrealizacion`date,
`xpr_numero`varchar(145),
`xsolicitud_pr`date,
`xliberacion_pr`date,
`xnumero_po`varchar(45),
`xsolicitut_po`date,
`xliberacion_po`date,
`xnumero_gr`varchar(145),
`xsolicitud_gr`date,
`xliberacion_gr`date,
`xfacturado`varchar(45),
`xacumulado`varchar(45),
`xingreso_fact`date,
`xnumero_fact`varchar(45),
`xpago_fact`date,
`xstatus_proyecto`varchar(45),
`xtipo_pago`varchar(45),
`xrecepcion_pago`date,
`xbalance_proyecto`varchar(45),
`xcaptura`int,
`xobservaciones`varchar(245))
BEGIN
if xtipomov='A'
then
  begin
     update proyectos
  set 
   consecutivo=`xconsecutivo`,
   asg=`xasg`,
   a=`xa`,
   b=`xb`,
   estatus=`xstatus`,
   proyecto=`xproyecto`,
   electrico=`xelectrico`,
   estructura=`xestructura`,
   altura=`xaltura`,
   acceso=`xacceso`,
   ubicacion=`xubicacion`,
   cliente=`xcliente`,
   cotizacion=`xcotizacion`,
   realizacion=`xrealizacion`,
   pr_numero=`xpr_numero`,
   solicitud_pr=`xsolicitud_pr`,
   liberacion_pr=`xliberacion_pr`,
   numero_po=`xnumero_po`,
   solicitut_po=`xsolicitut_po`,
   liberacion_po=`xliberacion_po`,
   numero_gr=`xnumero_gr`,
   solicitud_gr=`xsolicitud_gr`,
   liberacion_gr=`xliberacion_gr`,
   facturado=`xfacturado`,
   acumulado=`xacumulado`,
   fecha_ing_fac=`xingreso_fact`,
   numero_fact=`xnumero_fact`,
   pago_fact=`xpago_fact`,
   status_proyecto=`xstatus_proyecto`,
   tipo_pago=`xtipo_pago`,
   recepcion_pago=`xrecepcion_pago`,
   balance_proyecto=`xbalance_proyecto`,
   captura=`xcaptura`,
   observaciones=`xobservaciones`
    where id_proyecto=`xidproyecto`;
   end;
  else

  begin
    insert into  proyectos
   (consecutivo,
   asg,
   a,
   b,
   estatus,
   proyecto,
   electrico,
   estructura,
   altura,
   acceso,
   ubicacion,
   cliente,
   cotizacion,
   realizacion,
   pr_numero,
   solicitud_pr,
   liberacion_pr,
   numero_po,
   solicitut_po,
   liberacion_po,
   numero_gr,
   solicitud_gr,
   liberacion_gr,
   facturado,
   acumulado,
   fecha_ing_fac,
   numero_fact,
   pago_fact,
   status_proyecto,
   tipo_pago,
   recepcion_pago,
   balance_proyecto,
   captura,
   observaciones)

    values
   (`xconsecutivo`,
   `xasg`,
   `xa`,
   `xb`,
   `xstatus`,
   `xproyecto`,
   `xelectrico`,
   `xestructura`,
   `xaltura`,
   `xacceso`,
   `xubicacion`,
   `xcliente`,
   `xcotizacion`,
   `xrealizacion`,
   `xpr_numero`,
   `xsolicitud_pr`,
   `xliberacion_pr`,
   `xnumero_po`,
   `xsolicitut_po`,
   `xliberacion_po`,
   `xnumero_gr`,
   `xsolicitud_gr`,
   `xliberacion_gr`,
   `xfacturado`,
   `xacumulado`,
   `xingreso_fact`,
   `xnumero_fact`,
   `xpago_fact`,
   `xstatus_proyecto`,
   `xtipo_pago`,
   `xrecepcion_pago`,
   `xbalance_proyecto`,
   `xcaptura`,
   `xobservaciones`);
   end;
end if;

END

ecfisa 15-05-2014 22:00:50

Hola gplata.

Por favor cuando incluyas código en tus mensajes usa los TAG's:



Saludos :)

gplata 15-05-2014 22:02:31

ok, una disculpa

ecfisa 15-05-2014 22:18:49

Hola gplata.

No te preocupes, es para darle mas legibilidad al código y de ese modo puedas obtener mas respuestas (ya las agregué a tu mensaje).

Saludos :)

gplata 17-05-2014 00:22:54

Ya he encontrado lo que está causando el problema, es al momento de pasar unas fechas, al revisar los valores que estoy enviando al stored procedure me encontré que en 2 campos de fecha me esta dando el siguiente valor: Delphi exeption û'^Aat$760F91D.
Le cambié los componentes de fecha, y no se corrigió, copié unos componentes de fecha que si mandan bien el valor y no corrigió, ya revisé la estructura de la tabla y el campo está como ''Date'' , revisé el stored procedure y la variable está también como ''Date'', para poder avanzar le he mandado el valor directo, es decir sin hacer uso de los componentes de fecha, y le estoy mandando un campo fijo: '16/05/2014', y de este modo si hace el update, seguiré revisando para encontrar la solución!!!!


La franja horaria es GMT +2. Ahora son las 18:37:34.

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