Ayuda con error en código implementado con Power Builder y el uso de datawindows

Hola experto, mi problema es que tengo 2 DW una en la cual muestro un registro en formato modal, y abajo tengo una grilla, la idea (que ya me funciona en otro programa) es que cuando yo pincho un registro, este se displaye arriba, para verlo o modificar algo. El punto es que al hacer doble click me da el siguiente error :
- INVALID DW ROW/COLUMN ESPECIFIED AT LINE 8 IN DOUBLE CLICKED OF OBJECT DW_2 OF W_MANTENCION_MOVIMIENTOS...
El error se produce justo después del else, y este es el script de la dw_2
Gracias por todo.
String ls_tipo
integer li_linea
long ll_nucomp
// Para evitar que este fuera de foco
if row<=0 THEN
MessageBox("ATENCION","PARA SELECCIONAR HAGA DOBLE CLICK SOBRE UNA FILA")
else
ls_tipo=this.GetItemString(row,"TIP_MOV")
ll_nucomp=this.GetItemNumber(row,"NU_COMP")
li_linea=this.GetItemNumber(row,"LIN_COMP")
dw_1.retrieve(ls_tipo,ll_nucomp,li_linea)
dw_1.setfocus()
end if

1 respuesta

Respuesta
1
No veo ningún problema por el cual te denote el error. Imagine que estabas haciendo click en la cabecera del datawindow y el valor de row fuera 0 o menor. Sin embargo esto ya lo tienes controlado.
Creo que tu problema esta cerca de la linea
ll_nucomp=this.GetItemNumber(row,"NU_COMP")
Puede ser la anterior o posterior.
Sin embargo, quiero centrar mi propuesta.
cuando estas generando o creando un datawindow object. Es posible que utilices más de una tabla para la creación de dicho datawindow object. En otras palabras una combinación de tablas para denotar un resultado que puede ser una vista o un reporte.
Power builder cuando recibe esto. Coloca el nombre de las columnas de una forma especial.
Por ejemplo tu puedes pensar que cod_cliente refiere al código del cliente (serie alo más lógico), sin embargo esto no lo asume power builder, sino que advierte que puede existir un cod_cliente en varias tablas, por ejemplo maestro de clientes, y cabecera de factura. (Por poner un ejemplo)
Esto significa que en tu combinación de SQL, en el datawindow object, tendrás que utilizar el nombre de la tabla luego un punto, luego el nombre de la columna para poder separar una cosa de la otra.
Power builder utiliza la misma técnica, sin embargo no coloca un punto entre tabla y columna, sino que coloca un guion bajo.
Así pues puedes hacer mención a la columna de código de cliente del maestro de cliente y de la cabecera de factura
Digamos:
dw_1.GetItemString(1, 'maestro_cliente_cod_cliente')
dw_1.GetItemString(1, 'cab_factura_cod_cliente')
Aunque personalmente pueda creer que el nombre sea simplemente 'cod_cliente',
Como veo creo que ya exprimiste tu código a más no, y no encuentras visualmente ningún problema.
Te invito a comparar realmente el nombre de la columna a la que estas haciendo mención.
Eres realmente un experto, antes ya había probado con eso, ya que si hay dos tablas en la DW, pero tu me diste la sintaxis correcta.
Te lo agradezco mucho.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas