jueves, 24 de mayo de 2012

Obtener valor de buffer de un datawindow con Power Builder

En esta post veremos como con una funcion podemos obtener los valores de un campo dentro de un datawindow sin estar preguntando que tipo de datos es el campo del cual queremos obtener el dato asi ya no nos preocuparemos en que si es number usar la funcion getItemNumber o si es string getItemString() con solo llamar a la funcion ya obtendremos el dato.

Creamos una funcion que se llame por ej fn_get_valor_buffer():
Return type: any
Parámetros:
1. Pass by: value, Type: datawindow, Name: cdw_datos
2. Pass by: value, Type: string, Name: col_dato

any dato
string tipo
long fila
tipo = cdw_datos.describe(""+col_dato+".coltype")
fila = cdw_datos.getrow()

IF tipo = "number" or left(tipo,7) = "decimal" or left(tipo,7) = "integer" or left(tipo,4) = "long" then
  dato = cdw_datos.GetItemNumber(fila, col_dato)
ELSEIF left(tipo,4)="char" then
  dato = cdw_datos.GetItemString(fila, col_dato)
ELSEIF tipo ="date" then
  dato = cdw_datos.GetItemDate(fila, col_dato)
ELSEIF tipo ="time" then
  dato = cdw_datos.GetItemTime(fila, col_dato)
ELSEIF tipo ="datetime" then
  dato = cdw_datos.GetItemDateTime(fila, col_dato)
ELSE
  dato = "error - tipo de dato desconocido"
END IF

return dato


Ejemplo de uso:
any vnombre
// acá obtenemos el dato como tipo any luego tenemos que castear el dato al tipo que necesitemos usar.
vnombre = fn_get_valor_buffer(dw_personas, 'nombre');
messageBox('', string(vnombre))

No hay comentarios.:

Publicar un comentario