Es muy sencillo. Les dejo como hacerlo esto lo deben de grabar en un archivo .bat, lo ejecutan y ya.
Agradeceria comentarios y/o puntuacion asi puedo saber si les fue de provecho y seguir posteando.
c:\trabajo\gbak -r -n -user SYSDBA -password masterkey c:\trabajo\backup_de_la_BD.fbk c:\trabajo\BD_RESTAURADA.fdb
Aclaro que deben de cambiar la ruta, nombre de usuario y pass de acuerdo a la BD de uds... pueden consultar si no esta claro.
Sabias que si comentas un blog estas incentivando a que cada dia haya mas información que podria ser importante para tí o los demas?... :) Espero les pueda ser de utilidad el mio.
miércoles, 9 de noviembre de 2011
miércoles, 28 de septiembre de 2011
Mas orden en DataWindow
// Permite ordenar ascendentemente o descendentemente la columna sobre la cual se ha hecho doble clic...
String ls_header, ls_temp, is_lastheader , is_order
// Para el caso que la columna sea de tipo texto...
IF dwo.Type = "text" THEN
ls_header = dwo.Name
IF ls_header = is_lastheader THEN
IF is_order = "D" THEN
is_order = "A"
ELSE
is_order = "D"
END IF
ELSE
is_lastheader = ls_header
END IF
// Como los títulos de las columnas por defecto son <campo>_t recortamos los dos últimos caracteres
ls_temp = Left(ls_header, Len(ls_header) - 2) + " " + is_order
This.SetRedraw(False)
This.SetSort(ls_temp)
This.Sort()
This.SetRedraw(True)
END IF
String ls_header, ls_temp, is_lastheader , is_order
// Para el caso que la columna sea de tipo texto...
IF dwo.Type = "text" THEN
ls_header = dwo.Name
IF ls_header = is_lastheader THEN
IF is_order = "D" THEN
is_order = "A"
ELSE
is_order = "D"
END IF
ELSE
is_lastheader = ls_header
END IF
// Como los títulos de las columnas por defecto son <campo>_t recortamos los dos últimos caracteres
ls_temp = Left(ls_header, Len(ls_header) - 2) + " " + is_order
This.SetRedraw(False)
This.SetSort(ls_temp)
This.Sort()
This.SetRedraw(True)
END IF
miércoles, 24 de agosto de 2011
Colores PowerBuilder
Algunos truquitos numericos para colorear text o backgroup
* Cambie la numeracion por el color que desea segun tabla de colores
this.Modify( ls_dia+".Background.Color='12632256'")
this.Modify( ls_dia+".Color='12632256'")
Color Red Green Blue
* Cambie la numeracion por el color que desea segun tabla de colores
this.Modify( ls_dia+".Background.Color='12632256'")
this.Modify( ls_dia+".Color='12632256'")
- Colores Especiales
Button Face | 79741120 | |||
Text | 33554432 | |||
Background | 1090519039 | |||
App. Workspace | 276856960 |
- Colores Clásicos
Color Red Green Blue
Black | 0 | 0 | 0 | 0 |
White | 255 | 255 | 255 | 16777215 |
Gray | 192 | 192 | 192 | 12632256 |
Dark Grey | 128 | 128 | 128 | 8421504 |
Red | 255 | 0 | 0 | 255 |
Dark Red | 128 | 0 | 0 | 128 |
Green | 0 | 255 | 0 | 65280 |
Dark Green | 0 | 128 | 0 | 32768 |
Blue | 0 | 0 | 255 | 16711680 |
Dark Blue | 0 | 0 | 128 | 8388608 |
Magenta | 255 | 0 | 255 | 16711935 |
Dark Magenta | 128 | 0 | 128 | 8388736 |
Cyan | 0 | 255 | 255 | 16776960 |
Dark Cyan | 0 | 128 | 128 | 8421376 |
Yellow | 255 | 255 | 0 | 65535 |
Brown | 128 | 128 | 0 | 32896 |
jueves, 28 de julio de 2011
Función para encriptar y desencriptar cadena de texto
Para esto creamos dos funciones, una que encripta y otra que desencripta el texto.
PARA ENCRIPTAR
Función 1: f_encripta(as_origen)
PARA ENCRIPTAR
Función 1: f_encripta(as_origen)
String vls_char, vls_result
String vls_str1, vls_str2
int j
vls_str1 = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz1234567890/"
vls_str2 = "zaq1xsw2cde3vfr4bgt5nhy6mju7ki8lo9ñp0ZAQXSWCDEVFRBGTNHYMJUKILOÑP&"
vls_result = ""
FOR j=1 TO len(a_origen)
vls_char = mid(a_origen,j,1)
vls_result += mid(vls_str2, pos(vls_str1, vls_char), 1)
NEXT
RETURN vls_result
PARA DESENCRIPTAR
Función 2: f_des_encripta(a_origen)
String vls_char, vls_result
String vls_char, vls_result
String vls_str1, vls_str2
int j
vls_str2 = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZabcdefghijklmnñopqrstuvwxyz1234567890/"
vls_str1 = "zaq1xsw2cde3vfr4bgt5nhy6mju7ki8lo9ñp0ZAQXSWCDEVFRBGTNHYMJUKILOÑP&"
vls_result = ""
FOR j=1 TO len(a_origen)
vls_char = mid(a_origen,j,1)
vls_result += mid(vls_str2, pos(vls_str1, vls_char), 1)
NEXT
RETURN vls_result
sábado, 23 de julio de 2011
Algunos truquitos en Power Builder.
Pueden parecer insignificantes pero algunas veces hasta lo mas insignificante se vuelve importante en el mundo de la programación; espero les sirva en alguna ocasión. Gracias por los comentarios
* Quieres Saber cuanto tarda tu script en ejecutarse??... comparto un truco que podria ayudarte
long ll_start, ll_elapsed | |
ll_Start = CPU ( ) | |
//El código que quieres comprobar | |
ll_elapsed = CPU ( ) - ll_Start |
* API que intercambia la funcionalidad de los botones del mouse
Debe crear una funcion externa y luego ejecutarlo
Global External Function:
Function boolean swapmousebutton(boolean var) library 'user32.dll'
powerScript:
boolean rtn, l_mouse
rtn=swapmousebutton(l_mouse)
if l_mouse =true then
messagebox('Cambio Realizado', 'Boton derecho como boton izquierdo')
else
messagebox (Cambio realizado', 'boton derecho como boton derecho')
end if
cuando ya tenga creada el evento verifique en que area es donde quiere realizar lo que fuera...
(util para uso de monitores touch screen). Pongo un ejemplo de area:
if ((xpos>= 1445 and xpos<=1518) and (ypos>= 1520 and ypos<=1572)) then
//aqui realizo mis scripts
end if
* Necesita una funcionalidad que le ayude a realizar algun evento cuando se mueva el mouse en un area determinada??....
Si tiene un cdw... vaya a eventos y cree uno donde el EventId sera : pbm_mousemovecuando ya tenga creada el evento verifique en que area es donde quiere realizar lo que fuera...
(util para uso de monitores touch screen). Pongo un ejemplo de area:
if ((xpos>= 1445 and xpos<=1518) and (ypos>= 1520 and ypos<=1572)) then
//aqui realizo mis scripts
end if
*Muestra el día de la semana en español, útil para los reportes que necesiten ser agrupados por día, este codigo debe ser copiado en un campo tipo "COMPUTE FIELD"
case(DAYNAME(DATE(fecha)) when 'Monday' then 'Lunes' when 'Tuesday' then 'Martes' when 'Wednesday' then 'Miercoles' when 'Thursday' then 'Jueves' when 'Friday' then 'Viernes' when 'Saturday' then 'Sabado' else DAYNAME(DATE(fecha)) )
*Muestra el Mes en español, este codigo debe ser copiado en un campo tipo "COMPUTE FIELD"
Case( Month ( Date ( fecha) ) when 1 then 'Enero' when 2 then 'Febrero'
when 3 then 'Marzo' when 4 then 'Abril' when 5 then 'Mayo' when 6 then 'Junio'
when 7 then 'Julio' when 8 then 'Agosto' when 9 then 'Septiembre' when 10 then 'Octubre'
when 11 then 'Noviembre' else 'Diciembre' )+ ' de '+String ( Year( fecha) )
*Muestra el Mes en español, este codigo debe ser copiado en un campo tipo "COMPUTE FIELD"
Case( Month ( Date ( fecha) ) when 1 then 'Enero' when 2 then 'Febrero'
when 3 then 'Marzo' when 4 then 'Abril' when 5 then 'Mayo' when 6 then 'Junio'
when 7 then 'Julio' when 8 then 'Agosto' when 9 then 'Septiembre' when 10 then 'Octubre'
when 11 then 'Noviembre' else 'Diciembre' )+ ' de '+String ( Year( fecha) )
*Retorna el número de días trasncurridos del año en curso
date ldt_desde,ldt_fecha_sis
date ld_fec_ini
string ls_fec_ini
integer li_dias
ldt_fecha_sis =today()
ld_fec_ini = date('01/01/'+ string(year(today())))
li_dias = daysafter(date(date(ldt_fecha_sis)),ld_fec_ini)
li_dias = (li_dias * -1) + 1
messagebox("Días Transcurridos",li_dias)
* ORDENAR DW POR CUALQUIER COLUMNA DE LA CABECERA
EN EL EVENTO CLICKED DE DW ESCRIBE EL SIGUIENTE CODIGO
string LS_Columna,LS_Col
integer LI_Pos
LS_Col =string(dw_1.GetObjectAtPointer())
for LI_Pos=1 to len(LS_Col)
If Mid(LS_Col,LI_Pos,1) = ' ' then
LI_Pos = len(LS_Col)
LS_Columna = mid(LS_Columna,1,len(LS_Columna) - 2)
Else
LS_Columna = LS_Columna + Mid(LS_Col,LI_Pos,1)
end if
next
dw_1.SetSort(LS_Columna+ A)
dw_1.Sort( )
/*Fuente: http://www.powerbuilder.org*/
string LS_Columna,LS_Col
integer LI_Pos
LS_Col =string(dw_1.GetObjectAtPointer())
for LI_Pos=1 to len(LS_Col)
If Mid(LS_Col,LI_Pos,1) = ' ' then
LI_Pos = len(LS_Col)
LS_Columna = mid(LS_Columna,1,len(LS_Columna) - 2)
Else
LS_Columna = LS_Columna + Mid(LS_Col,LI_Pos,1)
end if
next
dw_1.SetSort(LS_Columna+ A)
dw_1.Sort( )
/*Fuente: http://www.powerbuilder.org*/
|
viernes, 22 de julio de 2011
Tipos y utilidades para MessageBox
* Caracteres ASCII para MessageBox .
Nueva Línea: ~nTabulación horizontal: ~t
Tabulación vertical: ~v
Retorno de línea: ~r
Avance de hoja: ~f
Backspace: ~b
Comilla doble: ~"
Comilla simple: ~'
Tilde: ~~
Cualquier carácter base decimal: ~### (3 dígitos numéricos de 000 a 255)
Cualquier carácter base hexadecimal: ~h## (2 digitos hexa desde 01hasta FF)
Cualquier carácter base octal: ~o### (3 dígitos octales de 000 a 377)
Ejemplos:
Messagebox('Atención','Si existe Fecha Fin Real, la actividad ~n~r debe estar confirmada', Exclamation!)
"~64" Nos mostraría el carácter ASCII correspondiente ,o sea @
"~hF1" Nos mostraría el carácter ASCII correspondiente , o sea la ñ
* Simbolos para MessageBox
· Information! (Default)· StopSign!
· Exclamation!
· Question!
· None!
*Botones en MessageBox
· OK! — (Default) OK button
· OKCancel! — OK and Cancel buttons
· YesNo! — Yes and No buttons
· YesNoCancel! — Yes, No, and Cancel buttons
· RetryCancel! — Retry and Cancel buttons
· AbortRetryIgnore! — Abort, Retry, and Ignore buttons Ejemplos:
long result
result = MessageBox("Result", Abs(Distance), &
Exclamation!, OKCancel!, 2) //aqui se coloca 2 para q el boton de cancelar sea por defecto
IF result = 1 THEN
Exclamation!, OKCancel!, 2) //aqui se coloca 2 para q el boton de cancelar sea por defecto
IF result = 1 THEN
................
ELSE
ELSE
................
END IF
--------- Mostrar en 2 o mas lineas +&------------
messagebox('Atencion','El cargo que se le asignó no permite ver ~n~r' +&
'esta actividad, o esta Actividad'+&
' no le pertenece',StopSign!)
END IF
--------- Mostrar en 2 o mas lineas +&------------
messagebox('Atencion','El cargo que se le asignó no permite ver ~n~r' +&
'esta actividad, o esta Actividad'+&
' no le pertenece',StopSign!)
viernes, 15 de julio de 2011
En Firebird como saber en que tablas esta un campo determinado
SELECT RDB$RELATION_NAME FROM RDB$RELATION_FIELDS WHERE RDB$FIELD_NAME LIKE '%campo_que_queremos%'
-Equivalencia de select top 1 from tabla del SQL SERVER en FIREBIRD
SELECT FIRST 1 campo FROM tabla (reemplazas solo por la cantidad q deseas FIRST 2, FIRST 3 )
jueves, 14 de julio de 2011
Power Builder - Firebird
COMO EJECUTAR UN PROCEDIMIENTO ALMACENADO DESDE POWER BUILDER CON FIREBIRD
*Espero sea de mucha ayuda... lo comparto porque no encontré por ningun sitio una ayuda cuando lo necesite... todos iban sobre SQL Server... pero en fin lo unico que cambia es la forma de enviar los parametros.
declare pb_CONSULTA_PRODUC procedure for SP_CONSULTA_PRODUCTOS
(:ld_prod, :ls_usu) ;
connect using SQLCA;
//ejecutamos el procedimiento
execute pb_CONSULTA_PRODUC;
Commit using sqlca;
//probamos si ejecuto el procedimiento
IF SQLCA.SQLCode = -1 THEN
MessageBox("SQL error", SQLCA.SQLErrText)
END IF
close pb_CONSULTA_PRODUC;
PARA HACER UN REPORTE A PARTIR DE UN PROCEDURE CON FIREBIRD (No se si funciona con los demas SGBD, creo que no)
SELECT PON_ACTIVIDAD,
POV_SUCURSAL,
POV_EMPLEADO,
POV_ESTADO,
POV_PRIORIDAD,
POV_ACTIVIDAD_DESCRIP
FROM SP_ACTIVIDADES_DIARIAS_PREVIEW (:PD_FECHA)
Donde los campos seleccionados son los que devuelve el procedimiento y para este caso particular :PD_FECHA es el parametro tipo fecha que le enviamos al procedimiento para q devuelva los campos que necesitamos. Este tipo de llamadas a procedure no solo sirva para reportes... ya depende de la imaginacion y necesidad para utilizar esta forma o la anterior.
*Espero sea de mucha ayuda... lo comparto porque no encontré por ningun sitio una ayuda cuando lo necesite... todos iban sobre SQL Server... pero en fin lo unico que cambia es la forma de enviar los parametros.
declare pb_CONSULTA_PRODUC procedure for SP_CONSULTA_PRODUCTOS
(:ld_prod, :ls_usu) ;
connect using SQLCA;
//ejecutamos el procedimiento
execute pb_CONSULTA_PRODUC;
Commit using sqlca;
//probamos si ejecuto el procedimiento
IF SQLCA.SQLCode = -1 THEN
MessageBox("SQL error", SQLCA.SQLErrText)
END IF
close pb_CONSULTA_PRODUC;
PARA HACER UN REPORTE A PARTIR DE UN PROCEDURE CON FIREBIRD (No se si funciona con los demas SGBD, creo que no)
SELECT PON_ACTIVIDAD,
POV_SUCURSAL,
POV_EMPLEADO,
POV_ESTADO,
POV_PRIORIDAD,
POV_ACTIVIDAD_DESCRIP
FROM SP_ACTIVIDADES_DIARIAS_PREVIEW (:PD_FECHA)
Donde los campos seleccionados son los que devuelve el procedimiento y para este caso particular :PD_FECHA es el parametro tipo fecha que le enviamos al procedimiento para q devuelva los campos que necesitamos. Este tipo de llamadas a procedure no solo sirva para reportes... ya depende de la imaginacion y necesidad para utilizar esta forma o la anterior.
Suscribirse a:
Entradas (Atom)