Tres campos forman la clave

Hola experto, ayudame con esto por favor, el script (evento Itemchanged de la datawindow) que describo funciona, pero ahora lo quiero aplicar a otra dw que tiene 3 campos claves :
TIPO=STRING LARGO 2
NU_COMP = NUMERICO
LIN_COMP=NUMERICO
Esos 3 campos forman la clave del registro, pero la verdad es que no se como cambiar el script de abajo para que me funcione.Lo uso cuando ingreso el código, este automáticamente, me trae a la pantallee el registro (Si es que existe)
Gracias por ayudarme.
String ls_cod
String ls_valor
Integer li_rtn
Integer li_fila
ls_rut = THIS.GetColumnName()
ls_valor = data
IF upper(ls_cod) = "COD_PROD" THEN
li_rtn = THIS.RETRIEVE(ls_valor)
if li_rtn <= 0 then
li_fila = THIS.InsertRow(0)
This.Setitem(li_fila, "COD_PROD", data)
end if
END IF

1 respuesta

Respuesta
1
Si este script lo tienes en el evento itemchanged() entonces cambia simplemente un concepto, pues veo que el nombre del campo lo estas tomando de GetColumnName(), lo cual creo que no te hace falta.
El evento itemchanged() posee 3 argumentos.
ROW = es la fila que actualmente tiene el foco
DWO = el objeto del datawindow object que tiene el foco o que fue accionado.
DATA = el valor que el usuario acaba de ingresar pero en formato string.
Con esto permíteme hacerte una propuesta en base a tu script.
INTEGER li_return = 0
STRING ls_tipo
INTEGER li_numcomp
INTEGER li_linea
LONG ll_retrieve
LONG ll_fila
CHOOSE CASE LOWER(dwo.name)
CASE 'lin_comp'
ls_tipo = data
li_numcomp = THIS.GetItemNumber(row, 'num_comp')
ls_tipo = THIS.GetItemString(row, 'tip_mov')
li_linea = INTEGER(data)
ll_retrieve = THIS.RETRIEVE(ls_tipo,li_numcomp,li_linea)
IF (li_retrieve <= 0) THEN
ll_fila = THIS.InsertRow(0)
END IF
END CHOOSE
Asumo que lo que estas haciendo es buscar algo dependiendo de 3 datos.
Y en el ultimo haces la búsqueda, la cual si encuentra más de un registro con esas condiciones añade una linea al datawindow.
Lo que no tengo idea es para que te sirve la variable "li_fila" en tu script, pues al ser local en el evento, su valor se pierde con el final del evento.
Por lo demás pruébalo y si tienes algún problema me vuelves a consultar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas