sábado, 11 de agosto de 2007

Enviar un mail desde Flash CS3 con AS3 y php

Olvídense de LoadVars....pero no deja de ser parecido.
function enviarMail(){
//almacenamos la variables
var variables:URLVariables = new URLVariables();
variables.nombre = nombre.text;
variables.email = email.text;
variables.coment = mensaje.text;
//creamos la URLRequest para enviar las variables
var request:URLRequest = new URLRequest();
request.url = "mail.php";
request.method = URLRequestMethod.POST;//metodo de envio
request.data = variables;//adjuntamos las variables a la request
//creamos el objeto que cargará las variables que envía nuestro script
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, completeHandler);
try
{
loader.load(request);
}
catch (error:Error)
{
trace("Ha ocurrido el sgte. error: "+error.message);
}

function completeHandler(event:Event):void
{
trace(event.target.data.mensa);
nom.text = "";
ema.text = "";
com.text = "";

}
}

viernes, 16 de marzo de 2007

Query balance a 8 columnas

Esta query genera el balance a 8 columnas de una aplicación de contabilidad.
Usa las tablas detall_asto, cuentas y t_ctas que son los detalles de los asientos , las cuentas y los tipos de cuenta respectivamente.
En la versión para Mysql no se necesitan usar funciones almacenadas para la condicion dentro del select, se puede usar directamente SELECT IF(1=1,'VERDAD','MENTIRA'); pero se podrían usar:
select c.descrip ,tc.id_t_cta,
sum(da.debe) Debitos,
sum(da.haber) Creditos,
IF((sum(da.debe)-sum(da.haber))<0,'',(sum(da.debe)-sum(da.haber))) saldo_deudor,
IF((sum(da.haber)-sum(da.debe))<0,'',(sum(da.haber)-sum(da.debe))) saldo_acreedor,
IF(((sum(da.debe)-sum(da.haber))<0) or tc.id_t_cta>2,'',(sum(da.debe)-sum(da.haber))) Inv_Activo ,
IF(((sum(da.debe)-sum(da.haber))>0) or tc.id_t_cta>2,'',abs(sum(da.debe)-sum(da.haber))) Inv_Pasivo ,
IF(((sum(da.debe)-sum(da.haber))<0) or tc.id_t_cta<3,'',(sum(da.debe)-sum(da.haber))) Perdidas,
IF(((sum(da.debe)-sum(da.haber))>0) or tc.id_t_cta<3,'',abs(sum(da.debe)-sum(da.haber))) Ganancias ,
(select sum(debe) from detall_asto) tdebe,
(select sum(haber) from detall_asto) thaber
from detall_asto da, cuentas c,t_ctas tc
where da.id_cta = c.id_cta and tc.id_t_cta = c.id_t_cta
group by da.id_cta
order by c.id_t_cta, c.descrip


Y en la versión para Oracle podemos usar CASE o crear unas funciones para reemplazar las condiciones
CREATE OR REPLACE function CNOBLE.F_GET_RES
(v_in_debe NUMBER,v_in_haber NUMBER,v_in_tc NUMBER)
return NUMBER
is
v_out_nr NUMBER:=NULL;
begin
if v_in_debe-v_in_haber>0 AND v_in_tc>2
then
v_out_nr:=v_in_debe-v_in_haber;
end if;
return v_out_nr;
end;

Y hacemos la consulta.

select tc.id_t_cta,c.descrip,
sum(da.debe) Debitos,
sum(da.haber) Creditos,
f_get_saldos(NVL(sum(da.debe),0),NVL(sum(da.haber),0)) saldos_deudor,
etc...


Más adelante veremos la version con CASE de Oracle.