Recompile Interbase for Mac

Add interbase.so to MAMP / OSX

get xcode and macports.
install m4 through macports
download php-source corresponding to mamp-version

create symblinks needed
from http://www.ibexpert.net/forum/viewtopic.phpf=13&t=7&start=0&st=0&sk=t&sd=a

# in short:
# (backslash = keep on same row)
cd /usr
sudo  mkdir -p local/firebird/lib

sudo ln -s /Library/Frameworks/Firebird.framework/Firebird \
local/firebird/lib/libfbclient.dylib

sudo ln -s /Library/Frameworks/Firebird.framework/Headers/ \
local/firebird/include

#create .so
sudo su

cd /path-to-php-source/ext/interbase

/Applications/MAMP/bin/php5/bin/phpize

./configure –with-interbase=/usr/local/firebird

make

#install so to mamp-ext.dir
cp modules/interbase.so \
/Applications/MAMP/bin/php5/lib/ \
php/extensions/no-debug-non-zts-20050922

#add to /Applications/MAMP/conf/php5/php.ini
[firebird]
extension = interbase.so
ibase.allow_persistent = “1”
ibase.max_persistent = “-1”
ibase.max_links = “-1”
ibase.default_db = null
ibase.default_user = NULL
ibase.default_password = NULL
ibase.default_charset = NULL
ibase.timestampformat = “%Y-%m-%d %H:%M:%S”
ibase.dateformat = “%Y-%m-%d”
ibase.timeformat = “%H:%M:%S”

#restart mamp – interbase should show in phpinfo
#enjoy!

Error ORA-06502 Oracle y PHP

El problema se presentó usando PHP con Zend Framework 1 y Oracle 11G más detalles a continuación.

Oracle stored procedure:

CREATE OR REPLACE PROCEDURE FGONZALES.GRABA_PRUEBA
(ls_parametro varchar2
 ls_mensaje out varchar2)

Llamando al stored procedure desde PHP:

$param = 'test ';
$mensaje = ''; //O nulo
$params = array(
	'PARAM' => $param,
	'MENSAJE' => &$mensaje,
);

$sql = 'BEGIN 
GRABA_PRUEBA(
	:PARAM,
	:MENSAJE
);
END;'; 
$stmt = $db->prepare($sql);
$stmt->execute($params);

$respuesta = $mensaje;

Con los pasos anteriores obtengo el siguiente error por parte de Oracle:

6502 ORA-06502: PL/SQL: error : 
buffer de cadenas de caracteres demasiado 
pequeño numerico o de valor.

Para este caso ls_mensaje del stored procedure solo puede guardar un caracter, si pasa de uno aparece el error ORA-06502.
Mi solución fue la siguente:

$mensaje = str_repeat(' ', 4000);

Declarar la variable con un máximo tamaño para VARCHAR2 de Oracle.

Unidades de Power Builder a Pixeles

Power Builder maneja sus propias unidades de medida y si queremos pasar estas unidades a Pixeles o pulgadas o centimetros Power Builder maneja sus propias funciones.

La conversión a pixeles es la siguiente:

Para el eje de las abcisas “X”  y Anchos  = Unides / 4.571429

Para el eje de las ordenadas “Y” y Altos = Unidades / 4

Ejemplo:

Tengo un rectangulo de 21 de ancho y 5 de altura en unidades PB.

  1. El ancho en pixeles sería:  21/4.571429 = 4.59 pixeles
  2. El alto en pixeles sería: 5/4 = 1.25 pixeles

JasperPHP

JasperPHP, es una libreria PHP que permite realizar exportación de reportes en PHP a diferentes formatos a través de un solo archivo, así es ya no debes usar una librería para cada archivo formato que debas exportar.

A través de un solo archivo (*.JRXML) puedes exportar tus reportes en diferentes formatos.

JasperPHP_Export

Entre estos formatos tenemos PDF, XLS, DOC, DOCX, PPTX, CSV, HTML, ODS, ODT, TXT y RTF. Tambien hay posibilidad de exportarlo a SWF pero esa funcionalidad aún está en progreso.

Si desean ver el código de esta librería pueden ver el repositorio oficial de JasperPHP en GitHub.

https://www.github.com/jasperphp/JasperPHPlibrary#jasperphp