viernes, 29 de junio de 2012

Verificar la Existencia de una carpera y/o archivo

Scrip para Verificar la existencia de un directorio
IF FileExists("C:\PDF\carta_oferta.pdf") THEN
    ls_ruta='C:\PDF\carta_oferta.pdf'
else
    messagebox( "Atención ",'NO EXISTE C:\PDF\carta_oferta.pdf~n~r' +&
    'NO SE ADJUNTARA EL ARCHIVO!!!')
end if

Abrir window con varios parametros - PowerBuilder

Como podriamos abrir una ventana enviandole varios parametros, he aqui una solución que me sirvió mucho. El ejemplo esta basado en mi experiencia
1. Creamos una structura con los parametros que vamos a enviar y recibir.
     A mi structura lo llamé st_parametros_email
 2. Luego vamos a crear el Scrip desde donde enviaremos los parametros.
     En mi caso el el Evento Clicked de un boton.
     w_frame lw_frame
     w_sheet lw_sheet
     st_parametros_email lstr_parm //Aqui declaramos el parametro como
     //la structura que creamos anteriormente
     string ll_mail, ls_ruta, ls_parametros
     ll_mail = tabpage_1.dw_1.object.personas_mail[1]
     ls_ruta='C:\PDF\carta_oferta.pdf'
    //le asignas los valores para la structura
    lstr_parm.st_para =ll_mail
    lstr_parm.st_adjunto =ls_ruta
    lstr_parm.st_asunto ='Presupuesto'
    lstr_parm.st_cuerpo = 'Sr./es Cliente/s.: Adjuntamos Presupuesto'
    //aqui utilizo solo funciones del PFC, si no trabajas con PFC solo haz el  
    //clasico openwithparm(w_miventana,lstr_parm) y ya....
    if gnv_appmanager.of_getframe( lw_frame )  <> 1 then return
           opensheetwithparm(lw_sheet,lstr_parm,"w_send_mail",lw_frame,2,original! )
3. Y por ultimo este scrip lo ponemos en el evento OPEN de la ventana que recibirá los parametros.
    st_parametros_email lstr_parmr
    lstr_parmr = Message.PowerObjectParm
   //aginar los valores a cajas
   Sle_to.text = lstr_parmr.st_para
   lb_archivos.Additem(string( lstr_parmr.st_adjunto))
   sle_sub.text = lstr_parmr.st_asunto
   mle_mail.text = lstr_parmr.st_cuerpo

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'