Actualización de campos

Tengo 2 controles datawindow en una dw_comprobante y el otro dw_detalle en mi ventama w_comprobante y cada ves que requiero modificar los datos no logro modificarlos, lo que estoy haciendo en un control button modifico los 2 datawindow de mi tabla comprobante y detalle_comprobante y solo logro modificar el dw_comprobante(tipo freeform) de la tabla comprobante, más no el dw_detalle(tipo tabular) de la tabla detalle_comprobante de mi base de datos y el cual agrego varias filas no puedo modificarlos ya que son varias filas; y lo que quiero es modificar las filas filas de detalle, espero que puedan ayudar con mi problemas agradezco su atenion:
//codigo btn_actulizar
int n = 0
venta = dw_comprobante.object.cod_venta[1]
cliente = dw_comprobante.object.cod_cli[1]
comp = dw_comprobante.object.no_comp[1]
fecha = dw_comprobante.object.fecha_comp[1]
tipoc = dw_comprobante.object.tipo_comp[1]
update comprobante set cod_cli = :cliente, no_comp = :comp, fecha_comp = :fecha, tipo_comp = :tipoc where cod_venta = :venta;
   if sqlca.Sqlcode = 0 then
   commit using sqlca; 
   for n = 1 to dw_detalle.rowcount( )
    producto = dw_detalle.object.cod_prod[n]
    cantidad = dw_detalle.object.cant_venta_prod[n]
    precio = dw_detalle.object.importe[n]
    update detalle_comprobante set cod_prod = :producto, cant_venta_prod = :cantidad, precio_venta = :precio where cod_venta = :venta;
     if sqlca.sqlcode = 0 then
     commit using Sqlca;
    else
     rollback using Sqlca;
     messagebox("Atención!","Error Modificando Detalle"+ sqlca.sqlerrtext)
    end if
   next
   messagebox("Atención!","Datos Modficados con Éxito!")
  end if
 else
  rollback using Sqlca;
  messagebox("Atención!","Error Modificando Comrpobante!"+ sqlca.sqlerrtext)
 end if

1 Respuesta

Respuesta
1
Mucho Codigo! Jajaja.
La idea de power builder al darte los datawindows es evitarte todas esas lineas de código!
generalmente en mi caso solo daria dw_comprobante.update() de igual manera con el dw_detalle.update().
Para el detalle te sugiero que uses un dw grid!, y por cierto para que el dw pueda grabar necesita que las llaves primarias de cada tabla estén bien especificadas. En tu caso creo que es venta.
Bueno y si quieres seguir trabajando con el código que dejaste, pues parece que el origen del problema para que no puedas actualizar tu detalle esta en tu update.
//Tuyo
producto = dw_detalle.object.cod_prod[n]
    cantidad = dw_detalle.object.cant_venta_prod[n]
    precio = dw_detalle.object.importe[n]
    update detalle_comprobante set cod_prod = :producto, cant_venta_prod = :cantidad, precio_venta = :precio where cod_venta = :venta;
//Mio.
producto = dw_detalle.object.cod_prod[n]
    cantidad = dw_detalle.object.cant_venta_prod[n]
    precio = dw_detalle.object.importe[n]
    update detalle_comprobante set  cant_venta_prod = :cantidad, precio_venta = :precio where cod_venta = :venta and cod_prod = :producto;

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas