Informix - registro repetido (error)

 
Vista:

registro repetido (error)

Publicado por daniel (59 intervenciones) el 09/08/2005 22:12:27
salu2, tengo una rutina donde consulto una tabla para emitir un reporte, pero en el select durante la operacion se aborta con un error de fila repetida. consulto la tabla por dbaccess y no encuentro nada.

LET str_busca = "SELECT * ",
"FROM veninvs WHERE ",
" veninvs.cod_cia = ? ",
" ORDER BY cod_serv "
END IF
PREPARE var_no FROM str_busca
DECLARE cursor SCROLL CURSOR FOR var_no
OPEN cursor USING cod_cia
FETCH FIRST cursor INTO p_veninvs.*

FOREACH cursor INTO p_veninvs.*
SELECT * INTO p_veninvs.* FROM veninvs
WHERE veninvs.cod_cia = cod_cia ------->(EN ESTA LINEA DA EL ERROR)
OUTPUT TO REPORT rep_serv(p_veninvs.*,
p_conparm.nomcia)


GRACIAS POR LA AYUDA QUE ME PUEDAN BRINDAR.
AH TENGO INFORMIX ON LINE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:registro repetido (error)

Publicado por Manu (28 intervenciones) el 10/08/2005 08:35:40
SELECT * INTO p_veninvs.* FROM veninvs
WHERE veninvs.cod_cia = cod_cia

devuelve mas de 1 fila. Prueba en el dbaccess:
SELECT * FROM veninvs
WHERE veninvs.cod_cia = cod_cia

y mira a ver lo que devuelve.
Informix iguala la columna cod_cia con la columna cod_cia de la tabla veninvs, asi que lo que te devuelve es todo el contenido de la tabla. Al intentar meter todos los registros en una estructura p_veninvs.* da error.

La verdad que el codigo no lo entiendo. Entiendo que No te hace falta ejecutar esa select porque el registro p_veninvs.* ya lo tienes cargado en el foreach con el valor de la variable cod_cia.
Consejo: no poner a variables el nombre de columnas de tablas. En tu ejemplo, llama a la variable v_cod_cia (por ejemplo), asi no mezclaras conceptos. Quedaría:

LET str_busca = "SELECT * ",
"FROM veninvs WHERE ",
" veninvs.cod_cia = ? ",
" ORDER BY cod_serv "

PREPARE var_no FROM str_busca
DECLARE cursor SCROLL CURSOR FOR var_no
OPEN cursor USING v_cod_cia
FOREACH cursor INTO p_veninvs.*
OUTPUT TO REPORT rep_serv(p_veninvs.*, p_conparm.nomcia)
...............
END FOREACH

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:registro repetido (error)

Publicado por luis rivadlo (126 intervenciones) el 10/08/2005 18:41:58
Hola Te sugiero que intentes hacer lo siguiente
select nombre_campo, count(*) from tabla
group by 1

Para que te muestre por pantalla los registros que estan mas de una vez ,
despues evaluas que es lo que esta sucediendo con los resultados obtenidos.

Otra forma es bajar los datos a un excel siempre y cuando no seas muchos (mas de la capacidad del excel).

Prueba y Me cuentas.

Te invito a este sitio esta genial recuerda vas invitado por luis rivaldo
http://www.ubifone.com
http://www.ubiconference.com/latinos
Cuando Ingreses colocas &DTLORB_TUPAIS_TUNOMBRE
EJEMPLO:
&DTLORB_COLOMBIA_CECY_ANGEL su poniendo que eres de COLOMBIA
&DTLORB_MEXICO_CECY_ANGEL su poniendo que eres de MEXICO
&DTLORB_PERU_CECY_ANGEL su poniendo que eres del PERU.

http://www.bankmlm.com/luisrivaldo
favor Intentas varias veces entrar a veces esta congestionado el sitio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar