viernes, 29 de junio de 2012

Scrip PowerBuilder para Guardar directo a PDF

Este scrip nos permite guardar en PDF un reporte, ya que con el dw.saveas() si bien figura en la lista el formato, no guarda, o guarda pero al querer abrirlo nos da un Error.
Como primer paso debes tener Instalado una impresora Virtual, podria se el PDFCreator, cuando ya lo tengas instalado, renombralo con "PDF" (en el scrip llamaremos a esa impresora, si lo nombras de otra manera no lo encontrará), luego instalas el gs871w32.exe para S.O. de 32bits, y el gs871w64.exe para S.O. de 64bits, lo puedes descargar de algun sitio de internet, mas adelante sugeriré el sitio de donde yo lo descargué.
Y a continuación el Scrip, que yo lo puse en el evento clicked de un boton, cada uno verá donde ubicarlo de acuerdo a sus necesidades.

//por fativilla 27.06.2012 \m/
string ls_arc_pdf
CreateDirectory(GetCurrentDirectory( ) +'\PDF\') //SI no existe la carpera lo crea en el directorio del app
ls_arc_pdf= GetCurrentDirectory( ) +'\PDF\carta_oferta.pdf'
tabpage_5.dw_10.Object.DataWindow.Export.PDF.Method = Distill!
tabpage_5.dw_10.Object.DataWindow.Printer = "PDF"//PDF Nombre de la impresora virtual
tabpage_5.dw_10.Object.DataWindow.Export.PDF.Distill.CustomPostScript="YES"     // Permitir Postscript
if tabpage_5.dw_10.SaveAs(ls_arc_pdf,PDF!,true) <> 1 then
  messagebox("Error","Hubo un error al generar el archivo PDF~n~r"+&
                      "1. Puede que no haya instalado gs871w32.exe~n~r"+&
                    "2. Puede que no tenga una impresora virtual con el nombre 'PDF'~n~r", StopSign!)
else
    messagebox("Atención","El archivo se generó con EXITO!!~n~r"+&
                      ls_arc_pdf)
 end if

* Sitio de donde puedes descargar el gs871w32.exe
http://es.sourceforge.jp/projects/sfnet_ghostscript/downloads/GPL%20Ghostscript/8.71/gs871w32.exe/

martes, 26 de junio de 2012

Para saber relaciones de una tabla específica, cambias "AJUSTE" por la tabla de la cual quieres averiguar.

SELECT * FROM RDB$RELATION_CONSTRAINTS WHERE RDB$CONSTRAINT_NAME NOT STARTING WITH  'INTEG'
AND RDB$RELATION_NAME = 'AJUSTES'

Obtener directorio de la aplicación

Si quieres extraer el direcctorio donde se encuentra tu app, en mi caso lo busque para colocar el logo de la empresa en un reporte.
string ls_direcctorio_aplicacion
ls_direcctorio_aplicacion = GetCurrentDirectory( )
tabpage_5.dw_10.object.p_logo.Filename=ls_direcctorio_aplicacion+'\CR_Superior.JPG'
tabpage_5.dw_10.object.p_logo1.Filename=ls_direcctorio_aplicacion+'\CR_Inferior.JPG'

lunes, 7 de mayo de 2012

Crear Archivos .txt y/o .sql

En el ejemplo creo un archivo .sql a partir de un mle_1.text, ya le daran la utilidad que deseen y dependiendo del requerimiento de cada uno. En mi caso lo hice en el evento clicked de un boton.

//Exportar a un archivo
Int li_archivo
String ls_registro ,as_path_salida,as_archivo
as_path_salida     ='C:\Trigger\'
as_archivo = 'generado.sql'
CreateDirectory ( as_path_salida ) //crea la carpeta si no existe
//borramos el archivo si existiera
FILEDELETE(as_path_salida + as_archivo )
//Abrimos el archivo
li_archivo= FileOpen(as_path_salida + as_archivo ,LineMode!,Write!,lockwrite!)
ls_registro=mle_1.text
FileWrite(li_archivo, ls_registro)
FileClose(li_archivo)
messagebox( "Atención", 'Archivo guardado en: '+as_path_salida)

miércoles, 9 de noviembre de 2011

Como Restaurar una Base de Datos FIREBIRD

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.

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

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'")
  • 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