Páginas

jueves, 29 de abril de 2010

Compilar Objetos inválidos en Oracle

Este código le ayudará a compilar los objetos que estén con estado inválido
CREATE OR REPLACE PROCEDURE COMPILAR IS
--- Se Obtiene la Lista de Objetos Inválidos
CURSOR compila IS
SELECT 'alter '||DECODE(object_type,'PACKAGE BODY','PACKAGE',object_type)||' '||owner||'.'||object_name||' compile'||
       DECODE(object_type,'PACKAGE BODY',' BODY','') sentencia, owner, object_type, object_name
FROM ALL_OBJECTS
WHERE status<>'VALID'
ORDER BY DECODE(object_type,'PACKAGE BODY',1,0),1;
BEGIN
FOR C IN compila
    LOOP
EXECUTE IMMEDIATE C.sentencia;
END LOOP;
END;

Obteniendo información de la PC por medio de API’s desde VFP

Origen del Código news2news

CLEAR
#DEFINE MEMORYSTATUS_SIZE  32
DECLARE GlobalMemoryStatus IN kernel32;
    STRING @lpBuffer

PRIVATE cBuffer
cBuffer = REPLI(Chr(0), MEMORYSTATUS_SIZE)
= GlobalMemoryStatus(@cBuffer)
= Writeln("Memoria en USO, % ...................",  5)
= Writeln("Memoria Fisica en bytes ..........",  9)
= Writeln("Memoria Física disponible, bytes ...", 13)

PROCEDURE Writeln(cCaption, nOffs)
    LOCAL nSize
    nSize = buf2dword(SUBSTR(cBuffer,nOffs,4))
    ? cCaption + " " + ALLTRIM(TRANS(nSize, "999,999,999,999,999,999"))

FUNCTION buf2dword(cBuffer)
RETURN Asc(SUBSTR(cBuffer, 1,1)) + ;
    BitLShift(Asc(SUBSTR(cBuffer, 2,1)),  8) +;
    BitLShift(Asc(SUBSTR(cBuffer, 3,1)), 16) +;
    BitLShift(Asc(SUBSTR(cBuffer, 4,1)), 24)

miércoles, 21 de abril de 2010

Calculadoras Básicas hecha en VFP

Pueden utilizar este pequeño ejemplo para agregarlos a las aplicaciones.

calc

Codigo en Metodo AgregarNumero

LPARAMETERS lcNumero
SET FIXED OFF
IF lcNumero#'.' THEN
    thisform.valortexto = thisform.valortexto + lcNumero
    thisform.Refresh
    nDecimal=LEN(ALLTRIM(thisform.valortexto))-IIF(RAT('.',thisform.valortexto,1)=0,LEN(ALLTRIM(thisform.valortexto)),RAT('.',thisform.valortexto,1)-1)
    thisform.txtpantalla.value=ROUND(VAL(thisform.valortexto)*thisform.factor,nDecimal)
ELSE
    IF NOT ('.'$thisform.valortexto)
        thisform.valortexto = thisform.valortexto + '.'
    ENDIF
ENDIF

 

Còdigo en cada boton de numeros

thisform.agreganumero(ALLTRIM(this.Tag)) && en cada boton la propiedad TAG debe contener el numero

Boton Suma

thisform.procigual
thisform.operacion='+'  && en el metodo procigual se usa macrosustitucion para establecer la operacion

Codigo de metodo PROCIGUAL

IF !EMPTY(thisform.operacion) THEN
    lcSigno=thisform.operacion
    thisform.ultimonumero=thisform.txtpantalla.Value
    thisform.acumulado = thisform.acumulado &lcSigno thisform.ultimonumero
    thisform.txtpantalla.Value=thisform.acumulado
    thisform.valortexto=''
ENDIF

Espero que les haya servido de mucho el ejemplo.