Вы находитесь на странице: 1из 3

1 Funcin para encriptar y desencriptar un string

A continuacin se presenta la funcion of_encrypt que recibe un string y devuelve la


cadena encriptada, y la funcion of_decrypt que recibe una cadena encriptada y la
desencripta. [function string of_encrypt(as_str)]
integer i, j
string ls_enctext =
CONSTANT string CRYPT_KEY = $#@%&#%@&*
j = len(as_str)
FOR i = 1 TO j
ls_enctext += mid(CRYPT_KEY , mod(i,10) + 1, 1)
ls_enctext += String(Char(255 - Asc(Mid(as_str, i, 1))))
NEXT
RETURN ls_enctext
[function string of_decrypt(as_str)]
integer i, j
string ls_encchar, ls_temp, ls_unasstr = ** Encryption Error
boolean lb_ok = true
CONSTANT string CRYPT_KEY = $#@%&#%@&*
j = len(as_str)
IF NOT Mod(j, 2) = 1 THEN
ls_temp =
FOR i = 2 TO (j + 1) STEP 2
ls_encchar = Mid(as_str, i - 1, 1)
IF mid(CRYPT_KEY, Mod(i / 2, 10) + 1, 1) <> ls_encchar THEN
lb_ok = FALSE
EXIT
END IF
ls_encchar = Mid(as_str, i, 1)
ls_temp += string(char(255 - asc(ls_encchar)))
NEXT
END IF
IF lb_ok THEN ls_unasstr = ls_temp
RETURN ls_unasstr

2 Como agregar animacin a las ventanas


ESTA API SOLO ESTA DISPONIBLE EN WINDOWS 98 Y 2000. AGREGA LA
SIGUIENTE FUNCION EXTERNA:
Function boolean AnimateWindow(long lhWnd, long lTm, long lFlags ) library 'user32'
DONDE EL PRIMER PARAMETRO ES EL ?HANDLE? DE TU VENTANA, EL
SEGUNDO ES EL TIEMPO QUE SE DEBE TOMAR PARA LA ANIMACIN (MAYOR
VALOR = MAYOR LENTITUD EN LA ANIMACIN), Y POR ULTIMO EL TIPO DE
ANIMACIN QUE DESEAS AGREGAR.
PARA LLAMAR LA APLICACIN, AGREGA EL SIGUIENTE CODIGO AL EVENTO
OPEN DE TU VENTANA:
// Anima la ventana de izquierda a derecha
Constant long AW_HOR_POSITIVO = 1
// Anima la ventana de derecha a izquierda
Constant long AW_HOR_NEGATIVO = 2
// Anima la ventana de arriba hacia abajo
Constant long AW_VER_POSITIVO = 4
// Anima la ventana de abajo hacia arriba
Constant long AW_VER_NEGATIVO = 8
// Anima la ventana hacindola que aparezca del centro hacia los lados
Constant long AW_CENTRO = 16

// Oculta la ventana
Constant long AW_OCULTA = 65536
// Activa la ventana
Constant long AW_ACTIVA = 131072
// Usa la animacin de tipo diapositivas
Constant long AW_DIAP = 262144
// Usa la animacin con efecto de transparencia
Constant long AW_TRANS = 524288
AnimateWindow( Handle( this ), 500, AW_TRANS )

3 Crear una tabla desde PowerScript


Con las siguientes instrucciones usted puede crear una tabla desde power script o
hacer un cambio a la tabla con alter table. Debe verificar que el autocommit de la
transaccin este en TRUE. SQLCA.AutoCommit = True
ls_sql = create table #tmp (abc varchar(255))
EXECUTE IMMEDIATE :ls_sql USING SQLCA;
//Para modificar la tabla, use la misma idea:
ls_sql = 'ALTER TABLE dba.tbl_name ADD col_name'
EXECUTE IMMEDIATE :ls_sql USING SQLCA;

4 Cargar un arreglo con todos los nombres de las columnas de un


DW
Este truco muestra como hacer para obtener los nombres de las columnas de un
datawindow, cargandolas a un arreglo. int colNum, numCols
string colName[]
numCols = Integer(dw_control.Describe(Datawindow.Column.Count))
FOR colNum = 1 TO numCols
// Toma el nombre de la columna con describe
colName[colNum] = dw_control.Describe(# + String(colNum) + .name)
NEXT

5 Como saber cuales dlls usa mi aplicacin?


Bueno lo que debes hacer es correr tu aplicacion desde el ejecutable (aplicacion.exe),
debes tener cerrado Power builder, y todas las aplicaciones, vas a inicio / ejecutar y
buscas el lugar donde esta el ejecuble y lo corres. Ya cuando tu aplicacion este
corriendo vas a inicio / ejecutar y escribes msinfo32.exe, este es un utilitario que tiene
windows 98, o si usas Office el tambien lo trae. Este es un programa de informacion
del sistema que te muestra los programas y dlls que usas actualmente. Ahi entra a
entorno de software, modulos de 32 bits cargados, en la parte derecha te va a mostrar
un listado de dlls del sistema que corren actualmente, para saber cuales con los que
usa tu aplicacion busca los que el fabricante es Sybase Inc y empiezan por PB*.dll. Ahi
encontraras los dlls. Ademas de esos hay uno dll que no tine fabricante pero es de
sybase tambien que es uno llamado libjcc.dll, ahi podras ver el .pbd o .dll de las
librerias de tu aplicacion y el .exe de la aplicacion, obviamente estos tambien hacen
parte de la aplicacion. Anota todos estos archivos, y luego crea una carpeta y copia
todos estos archivos dentro de la carpeta. Esta carpeta es la que debes llevar al
equipo donde vas a poner a correr la aplicacin. Y con esto ya debe correr la
aplicacion en el equipo que no tine PB.

6 Sobrecarga del Messagebox


Muchas veces se usa la funcin messagebox para mostrar el valor de una variable.
Powerbuilder trae la funcin messagebox() sobrecargada para que usted pueda
llamarla con cualquier tipo de dato. Normalmente la funcin tiene estos parmetros
MessageBox ( titulo, texto {, icono {, botn {, default } } } )

Donde los parmetros obligatorios titulo y texto son de tipo string. Esto hace que por
ejemplo para mostrar una variable de tipo entero se realice esta conversin
Int li_numero
li_numero = 2
messagebox(?titulo mensaje?,string(li_numero))
Con la sobrecarga que tiene esta funcin usted puede hacer esto
Int li_numero
li_numero = 2
messagebox(?titulo mensaje?, li_numero)
obteniendo el mismo resultado

7 Tomar el numero de filas seleccionas en un DW


Algunas veces es necesario contar cuantas filas se han seleccionado en un
datawindow. Para esto se puede usar la siguiente expresin. long ll_Selected
ll_Selected = long(dw_1.describe(evaluate('sum( if(IsSelected(), 1, 0) for all)',1)))

8 Pasar el contenido de un datawindow a otra ventana


Luego de tener un datawindow con informacin es posible pasar esos mismos datos a
otra ventana para no tener que volver a hacer el retrieve y ahorrar un acceso a la base
de datos. Se llama a la segunda ventana y se pasa por referencia el datawindow asi:
OpenWithParm( w_window, dw_1 )
En el evento open de w_window digita:
datastore lds_parm
lds_parm = Message.PowerObjectParm
dw_1.DataObject = lds_parm.DataObject
lds_parm.ShareData(dw_1)
Y en el evento close coloca:
dw_1.ShareDataOff()

9 Crear un Datawindow Dinmicamente


Este es un ejemplo de como crear un datawindow desde una instruccin select que se
tiene. Es muy ltil y muy prctico el ejemplo string ls_select
string ls_where
string ls_dwsyntax
string ls_err
ls_select = Select id, fname, lname, address, city, state, zip from customer
ls_where = where customer.fname like ' + is_cust + %'
ls_dwsyntax = SQLCA.SyntaxFromSQL ( ls_select, Style(Type=grid), ls_err )
dw_1.Create ( ls_dwsyntax, ls_err )
IF ls_err <> '' THEN
MessageBox ( error - Syntax, ls_err )
ELSE
dw_1.SetTransObject ( SQLCA )
dw_1.Retrieve()
END IF

Вам также может понравиться