PDA

Ver la Versión Completa : Problema al hacer update


gplata
15-05-2014, 21:53:48
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

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:

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:

http://img403.imageshack.us/img403/3461/75416396.jpg

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!!!!