El tema central de este BLOG es de programación y tecnología en general, aunque tambien publique otros temas.
jueves, 29 de abril de 2010
Compilar Objetos inválidos en Oracle
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.
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.