Page 1 of 1
Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 5:40 pm
by Mauricio
Hola
despues de pelearme por dias con la perdida de registros al subir de DBF a MySql con TMySql,
ayer me puse a hacer un tracing de por donde se perdia el hilo y es al agregar mas de 20 registros.
// el ejemplo no es dbf, pero hace lo mismo, es solo para explicar como lo hago
Code: Select all
nContador := 1
do while nContador < 50
oRegistro:("campo", nContador++)
oRegistro:Append()
if oRegistro:netErr()
msginfo(''ocurrio un error", nRegistro
endif
enddo
por lo general siempre marca el error al llevar en 20 y 30 registros, buscando lei algo de LOCK TABLE, BEGIN TRANSACCION , ROLLBACK
alguien ya paso por este trauma que me pueda tirar un cable antes de empezar a buscar
saludos,
Mauricio
Re: Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 7:02 pm
by Adolfo
Maurico...
Yo utilizo una rutina que agrega mas de 500 registros de golpe y no pierdo ninguno.. podrias enunciar con que lo haces o un ej del codigo verdadero para hecharle un ojo...
Usas que tipo de recordset, cliente, server, tipo de bloqueo.. el server es en LAN o en internet...
Eso
Saludos
Adolfo
Re: Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 7:13 pm
by Mauricio
Adolfo,
esta en internet, no e probado en local, porque el sistema esta corriendo en internet
es MySql, con TMySql, tipo de tabla InnoDB
tienes un trozo de codigo que pueda darme una luz
Code: Select all
static function LeeData( dFecha)
oMovs := oMysql:Query( "SELECT * FROM liquida LIMIT 0")
use( cMovtos ) new alias 'movtos'
nTotal := movtos->( RecCount())
msginfo('Registros a cargar : ' + ltrim(str(nTotal)), cProgram)
movtos->( dbgotop())
DO WHILE !movtos->( eof())
oMovs:fieldput('ruta' , movtos->Ruta)
oMovs:fieldput('cliente' , movtos->Cliente)
oMovs:fieldput('fecha' , dFecha )
oMovs:fieldput('cantidad' , movtos->Cantidad)
oMovs:fieldput('precio' , movtos->precio)
oMovs:fieldput('importe' , movtos->Importe)
oMovs:fieldput('registro' , ++nCargados)
// msgwait('Procesando informacion ..............' , 'Espere unos minutos .....', .25)
if !oMovs:Append()
msgStop('SE GENERO UN ERROR EN LA CONEXION, EL PROCESO SE CANCELARA' + CRLF +;
'RE-INTENTELO DE NUEVO POR FAVOR, NO SE DUPLICARA LA INFORMACION' + CRLF +;
'LOS _ YA FUERON ELIMINADOS, SE CARGARON' + CRLF +;
' : ' + ltrim( str( nCargados )) + ' del total : ' + ltrim(str(nTotal)), cProgram)
exit
endif
SysRefresh()
nCargados++
//movtos->( dbdelete())
movtos->( dbskip())
ENDDO
msginfo('_ : ' + ltrim(str(nCargados)) + ' de ' + ltrim(str(nTotal)),'Informe de Carga')
browse()
oMovs:end()
oMovs := NIL
return nil
Re: Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 7:35 pm
by Lautaro
Mauricio,
¿ Que error te reporta ?, ¿ es de Mysql ?, si es del motor o del cliente te va a dar un codigo de error que hay que buscar en la documentacion de mysql.
Atte.,
Lautaro
Re: Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 7:57 pm
by Mauricio
Lautaro,
solo me retorna error al agregar, no sabria si es el motor de datos o como lo identifico?
Code: Select all
if !oMovs:Append()
msgStop('SE GENERO UN ERROR EN LA CONEXION, EL PROCESO SE CANCELARA' + CRLF +;
'RE-INTENTELO DE NUEVO POR FAVOR, NO SE DUPLICARA LA INFORMACION' + CRLF +;
'LOS _ YA FUERON ELIMINADOS, SE CARGARON' + CRLF +;
' : ' + ltrim( str( nCargados )) + ' del total : ' + ltrim(str(nTotal)), cProgram)
exit
endif
que seria lo mismo que hacer esto
Code: Select all
oMovs:Append()
if oMovs:NetErr()
? "se genero un error"
endif
saludos y gracias por su interes
Mauricio
Re: Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 8:30 pm
by Lautaro
Mauricio,
Puedes usar el metodo :error() de la clase TMysqlQuery o TmysqlTable
en tu codigo quedaria mas o menos asi :
Code: Select all
oMovs:Append()
if oMovs:NetErr()
? "se genero un error"
? oMovs:Error()
endif
Saludos,
Lautaro Moreira
Re: Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 8:31 pm
by Mauricio
probando
gracias,
Mauricio
Re: Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 8:45 pm
by Mauricio
Lautaro,
yo te mando hacer una estatua hermano y al buen Adolfo una altar con flores
como dicen por aca... "
the one that does not know, he is like that does not watch"
me habeis salvado el dia sres, con ese codigo del numero de error, me dice que tenia una llave duplicada, le quite el primary Key and ready.
subio todos los registros.
cosa de novatos para ustedes, pero son mis pinimos con Sql,
gracias de nuevo a los 2
Mauricio
Re: Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 10:03 pm
by Lautaro
Mauricio,
No tienes nada que agradecer, y es un placer que mis conocimientos sirvan para algo.
Sobre tu problema, creo que deberias ver el diseño de la tabla, ya que por lo menos en teoria no deberian haber primary keys repetidas, a menos que algo ( no se me ocurre que ) lo justifique.
Saludos.
Lautaro Moreira
Re: Error an agregar registros en MySql
Posted: Thu Dec 03, 2009 10:58 pm
by Mauricio
Si, fue pensar aun como DBF, podia tener el mismo codigo N veces en el detalle de movientos de una factura, le hacia un indice y podian repetirse sin problemas, cuando consultara ese codigo le hacia un seek y listo
pero aqui no me deja duplicarlo, ese campo no debe ser primery Key en la tabla, error de novato.
saludos,
Mauricio