Power Builder - COMO CREAR UNA FUNCTION

 
Vista:
sin imagen de perfil

COMO CREAR UNA FUNCTION

Publicado por Edgar (87 intervenciones) el 28/06/2007 23:09:35
Amigos del foro, nuevamente muchas gracias por su ayuda, miren tengo una ventana para ingresos de DIARIOS CONTABLES, como se supondran esta ventana tiene su código y un número de díario que se genera secuencialmente,

PREGUNTA.- NO DESEO GENERAR MAS ESTE SECUENCIAL, AHORA DESEO QUE EL SECUENCIAL SE ME GENERE EN BASE AL MES EN QUE ME ENCUENTRO.

EJEMPLO: FECHA 28/06/2007 EL NUMERO DEL DIARIO DEBERIA SER 0600001 DE ACUERDO AL MES Y ASI SI CAMBIO DE MES.

-----------------------------------------------------------------------------------------------------------------------------
CÓDIGO 01 FECHA: 28/06/2007 COMPROBANTE Nª 0600001
CAMBIA DE ACUERDO AL MES
-----------------------------------------------------------------------------------------------------------------------------

COMO ME CREO UNA FUNCION QUE ME PERMITA HACER ESO Y CLARO ESTA ESTA FUNCION YO LA LLAMARIA DESDE EL EVENTO NUEVO DE LA VENTANA.

LES PIDO ESTA GRAN AYUDA PUES LA VERDAD NUNCA HE CREADO UNA FUNCION

GRACIAS.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:COMO CREAR UNA FUNCTION

Publicado por Alonso (62 intervenciones) el 29/06/2007 01:05:04
Estimado
No especificaste en cual version de PB estas trabajando, pero:
1. En PW 6.5.1
En los iconos , tales como; abrir una ventana, un DataWindow, etc, seleccionar aquel icono "F(x)", tiene como titulo "Function", visualizara una caja de dialogo, presionar "New" y debes colocarle el nombre de la funciòn (funciòn global) fg_xxxx, seleccionar que tipo de valor debe devolver al llamarla y los nombre y tipo de valor recibira como parametros. Luego escribes las sentencias que corresponden.

2. En PW 7.0 en adelante
En el menu principal "File" acceder a la opciòn "New", visualizara una ventana con diferentes tipos de objetos que puedes crear, acceder a la pestaña "Object", en ella podras ver varios tipos de objetos acceder al icono F(x), y de igual forma enunciada anteriormente, puedes crear una funciòn global.

Espero haber ayudado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:COMO CREAR UNA FUNCTION

Publicado por Rolando (19 intervenciones) el 29/06/2007 16:01:56
Bueno, para crear la funcion en si, solo tienes que seleccionar la pestaña "function list" de la ventana donde quieras generar el codigo.
Algunas funciones que te pueden servir para generar tu codigo pueden ser, especificar el nombre y el tipo de retorno, parametros, etc.

mes = Month(15-02-2004) //retorna como entero: 2
y puedes hacer algo similar a esto

/*debes obtener el ultimo valor del comprobante, puedes usar en un criterio de busqueda "no_comprobant LIKE '" + mes + "%" y usar un ORDER BY o MAX, busca en la ayuda sobre el metodo setsqlselect del datawindow para cambiar la sentencia SQL a una mas complejita. */

/* puedes usar la funcion de strings RIGHT para obtener una subcadena de una cadena... correlativo = RIGHT('0600001', 5) retornaria '00001' o '1', luego evaluas la longitud del correlativo regresado y lo concatenas con y un relleno

codigonuevo = relleno1 + string(mes) + relleno2 + correlativo

/*relleno1 es para darte el efecto de ="06" al inicio de tu codigo, si el mes es mayor que 9 el relleno1 = "".
relleno2 es para los "0000" que deber completar tu codigo, por eso te digo que debes obtener el ultimo valor que empieze con el mes deseado.*/

return codigonuevo

Espero haberte entendido y que te sirva mi respuesta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:COMO CREAR UNA FUNCTION

Publicado por Jorge Escobar (110 intervenciones) el 29/06/2007 17:52:48
como crear una funcion ya te explicaron ateriomente.
tanto para una funcion globar o a nivel de objeto tiene uno o muchos argumentos de entrada según sea el caso y un argumento de retorno o ninguno.
para este caso el retorno es string
of_generatekey() return string
//script de la funcion para generar el codigo

string ls_codigo
string ls_mes
ls_mes = string(month(today(),"00"))

Select isNull(max(cod_diario),0) into :ls_codigo from diario_contable
where substring(cod_diario,1,2) = :ls_mes;
ls_codigo = ls_mes + fill('0',7 - 2 - len(string(double(ls_codigo) + 1)) + string(double(ls_codigo) + 1)

return ls_codigo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar