PDA

Ver la Versión Completa : Al leer archivo o al grabar mas de 10 registros toda una columna se repite :-(


IVAND
25-06-2008, 23:30:54
Hola a todos trabajo con los ibx y delphi 6 se me ha presntado una cosa media especial resulta que tengo que cargar los datos de un query en otro pero cuando lo hago un valor del query al que estoy ingresando los datos no cambia es decir esa columna repite a todos los registros el mismo dato

Ejemplo imaginemos que cargo de un archivo csv los datos a un ibdataset , que tiene estos select


// select de consulta

SELECT DM.CANTIDAD CANTIDAD, DESCUENTO, KEY_CAB_MOV, KEY_DET_MOV, PRECIO, TOT_IVA, TOTAL_LINEA, VALOR_PROMEDIO,
KEY_EMPRESA,
KEY_BODEGA,
KEY_PRODUCTO,
p.COD_PRODUCTO,
KEY_PRODUCTO_B,
p.NOMBRE,
PRE_COS,
PRECIOA,
PRECIOB,
PRECIOC,
PORDES,
APLICA_IVA,
FRACCION,
DIAS_PLAZO,
SALDO_FAC,
CANTIDAD CANTIDAD1,LOTE, key_lote, p.precio_uing,0 key_p
FROM det_mov dm, vi_producto_bodega vpb, producto p
WHERE key_cab_mov =:key_cab_mov
and p.key_producto=vpb.key_producto
AND dm.key_producto_b=vpb.key_producto_b

// y Este select en refresh

SELECT DM.CANTIDAD CANTIDAD, DESCUENTO, KEY_CAB_MOV,
KEY_DET_MOV, KEY_PRODUCTO_B, PRECIO,TOT_IVA, TOTAL_LINEA,
VALOR_PROMEDIO,
KEY_EMPRESA,
KEY_BODEGA,
KEY_PRODUCTO,
p.COD_PRODUCTO,
KEY_PRODUCTO_B,
p.NOMBRE,
PRE_COS,
PRECIOA,
PRECIOB,
PRECIOC,
PORDES,
APLICA_IVA,
FRACCION,
DIAS_PLAZO,
SALDO_FAC,
CANTIDAD CANTIDAD1,LOTE, key_lote
FROM det_mov dm, vi_producto_bodega vpb, producto p
WHERE p.key_producto=vpb.key_producto
AND dm.key_producto_b=vpb.key_producto_b
AND KEY_DET_MOV = :KEY_DET_MOV

como ven el campo codigo se repite el mismo en la medida que se ingresan los campos pero solo es ese dato pero si yo me pongo en la linea y presiono f5 me muestra el dato real , que proda estar passando he puesto query.refresh ,queryrefreshsql y nada

Espero su invalorable ayuda gracias de antemano

defcon1_es
26-06-2008, 09:53:39
Hola.

No se con que motor sql trabajas (interbase, firebird, mysql, oracle...)
pero te recomiendo que si usas abreviaturas para las tablas en la select,
le pongas a cada campo de que tabla es.

Otra cosa que supongo será un error tipográfico, en la línea
CANTIDAD CANTIDAD1,LOTE, key_lote, p.precio_uing,0 key_p
se te ha colado un cero, ¿no?

Salu2

IVAND
26-06-2008, 15:47:31
Gracias por tu respuesta amigo , pero ya he intentado todo el 0 no es un error tipografico solo es un campo que se agrega para realizar un calculo que no se graba en la base , el motor es firebird 1.5 , ademas lo raro es que solo es en el campo cod_producto , porque los otros campos quedan muy bien , la validacion del cod_producto se lo realiza en el evento onvalidate del ibdataset , ademas si me coloco en las lineas y presione f5 entonces refresca y muestra el dato correcto

defcon1_es
22-12-2008, 11:54:44
Prueba a poner en todos los campos de las select, la tabla de donde vienen.

SELECT DM.CANTIDAD, DM.DESCUENTO, DM.KEY_CAB_MOV,
dm.KEY_DET_MOV, dm.KEY_PRODUCTO_B, dm.PRECIO,dm.TOT_IVA, dm.TOTAL_LINEA,
dm.VALOR_PROMEDIO,
p.KEY_EMPRESA,
p.KEY_BODEGA,
p.KEY_PRODUCTO,
p.COD_PRODUCTO,
p.KEY_PRODUCTO_B,
p.NOMBRE,
p.PRE_COS,
p.PRECIOA,
p.PRECIOB,
p.PRECIOC,
p.PORDES,
p.APLICA_IVA,
p.FRACCION,
p.DIAS_PLAZO,
p.SALDO_FAC,
dm.CANTIDAD as CANTIDAD1,dm.LOTE, dm.key_lote
FROM det_mov dm, vi_producto_bodega vpb, producto p
WHERE p.key_producto=vpb.key_producto
AND dm.key_producto_b=vpb.key_producto_b
AND dm.KEY_DET_MOV = :KEY_DET_MOV

Kipow
22-12-2008, 12:34:15
Hola.

No se con que motor sql trabajas (interbase, firebird, mysql, oracle...)
pero te recomiendo que si usas abreviaturas para las tablas en la select,
le pongas a cada campo de que tabla es.

Salu2

toma muy en cuenta esta recomendacion que en versiones posteriores de Firebird te lanzara un mensaje de error.

Con respecto a tu problema, porque no dejas que el mismo componente te cree las sentencias y/o podrias colocar el evento onvalidate del campo con el que tienes problemas?.