Error al extraer nombre y tipo de dw

Pregunta
Tengo el siguiente código que me permite leer los nombres de las definiciones de los encabezados de la datawindow y el tipo de datos que devuelve y dependiendo del tipo de dato capturo el valor del registro y lo convierto todo a un solo string, el código me funciona perfectamente, cuando la datawindow tiene 16 campos, pero me da error cuando hace la lectura de 17 campos me da el clásico error de mala asignación "Invalid Datawindow row/columna specified", lo cual no es cierto, pero sin embargo al continuar corriendo la aplicación sigue capturando los demás datos pero generando error a partir de la columna 17 de la definición de la datawindow, revise también la definición de la tabla y todo esta correcto, ¿cuál seria la solución?
Gracias, te mando el código:
String  ls_colcount,ls_col_name,ls_col_type,ls_resultado,ls_long
Integer i
Long    ll_colcount
// EXTRAE EL TOTAL DE COLUMNAS DE LA DATAWINDOW
ls_colcount = tab_1.tabpage_1.dw_3.Object.DataWindow.Column.Count
ll_colcount =Integer(ls_colcount)
String ls_char,ls_date,ls_decimal,ls_numero,ls_time
FOR i=1 TO ll_colcount
// EXTRAE EL NOMBRE DE LA COLUMNA DE LA DATAWINDOW
ls_col_name = tab_1.tabpage_1.dw_3.describe('#'+string(i)+'.name')
// EXTRAE EL TIPO DE LA COLUMNA DE LA DATAWINDOW
ls_col_type = tab_1.tabpage_1.dw_3.describe('#'+string(i)+'.Coltype')
MESSAGEBOX("NOMBRE Y TIPO",ls_col_name+'**---->'+ls_col_type+'--'+STRING(I))
// CONVIERTE A STRING LOS TIPOS DE DATOS: Datetime, Decimal, Number
CHOOSE CASE left(ls_col_type,4)
CASE "char"
ls_char = tab_1.tabpage_1.dw_3.GetitemString(i,ls_col_name)
IF IsNull(ls_char) or trim(ls_char)="" THEN
ELSE
//ls_resultado = ls_resultado+TRIM(ls_char)+','
END IF
CASE    "date"
ls_date = String(tab_1.tabpage_1.dw_3.GetitemDatetime(i,ls_col_name))
IF IsNull(ls_date) or trim(ls_date)="" THEN
ELSE
//ls_resultado = ls_resultado+ls_date+','
END IF
CASE    "numb"
ls_numero = String(tab_1.tabpage_1.dw_3.GetitemNumber(i,ls_col_name))
IF IsNull(ls_numero) THEN
ELSE
//ls_resultado = ls_resultado+ls_numero+','
END IF
CASE    "deci"
ls_decimal = String(tab_1.tabpage_1.dw_3.GetitemDecimal(i,ls_col_name))
IF IsNull(ls_decimal) THEN
ELSE
//ls_resultado = ls_resultado+ls_decimal+','
END IF
END CHOOSE
//messagebox("el total de los registros es ",ls_resultado)
END FOR

1 Respuesta

Respuesta
A simple vista no parece tener errores de programación. ¿Qué versión de PowerBuilder estás utilizando? Intenta actualizando al último EBF disponible.
Gracias por ru respuesta pero el error lo pude encontrar y era el tratamiento de valores nulos que no los había considerado en el momento de concatenar, esa era el error.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas