Seguidores

MIS WEBS



sábado, 30 de diciembre de 2017

HIPERVINCULO DINAMICO VBA ACCESS

En Access disponemos de comandos para generar hipervínculos de una forma fácil, pero ¿Qué sucede cuando necesitamos construir un hipervínculo dinámico? En mi caso necesitaba un hipervínculo para abrir el archivo generado diariamente tras una serie de cruces realizados en mi BBDD y ya exportado a una carpeta donde se encuentran otros archivos con el mismo nombre y diferentes fechas.


He elegido crear uno al que le pueda pasar por parámetros los datos para así reutilizarlo siempre que me fuera necesario, es la gran ventaja que nos permite la programación orientada a objetos POO.

Pasaremos por parámetros la ruta de acceso al archivo, el nombre del archivo, el tipo de archivo (.doc, .xlsx, .xls …) y el nombre del botón en el que se dispara la acción.


El código abrirá el archivo colgado en la ruta con el nombre que pertenezca a la fecha de hoy.
Os dejo el código por si le puede ser útil a alguien.


Private Function AbrirArchivo(ruta_acceso, archivo_buscado, tipoArchivo_buscado As String, ByRef nombre_boton As Object) As Hyperlink

Dim ctl As CommandButton
Dim ruta, archivo, s, tipoArchivo, Archivo_fecha As String
Dim dia, mes, año As Integer
dia = Day(Now)
mes = Month(Now)
año = Year(Now)
s = "_"
tipoArchivo = tipoArchivo_buscado
ruta = ruta_acceso
archivo = archivo_buscado & Archivo_fecha
Archivo_fecha = s & dia & s & mes & s & año & tipoArchivo

    Set ctl = nombre_boton
    With ctl   
        .HyperlinkAddress = ruta & archivo & Archivo_fecha
        .Hyperlink.Follow
    End With
End Function


Private Sub Comando44_Click()
Call AbrirArchivo("C:\Users\dagip\Desktop\BOGEER", "\entrada_articulo", ".docx", Comando44)
End Sub

miércoles, 27 de diciembre de 2017

Class Timer


La clase Timer la utilizaremos para desencadenar eventos cada vez que transcurra un periodo determinado de milisegundos.
Esta clase tiene dos parámetros en el constructor:
Int delay: Tiempo que transcurre hasta desencadenar la acción en milisegundos. Si deseamos que trascurran 10 seg = 10000, 2 seg = 2000
Actiónlistener: Este parámetro es una Interface ActionListener con un método que estaremos obligados a implementar ActionPerformed(ActionEvent Variable). Todo esto tan raro quiere decir que tenemos que crear el método y pasarlo por parámetros al constructor.

Ejm.

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.JOptionPane;
import javax.swing.Timer;

public class ejmplodeTimer {
      
     public static void main(String[] args) {
         reloj segundos = new reloj();
         Timer miReloj = new Timer(1000,segundos);
        
         miReloj.start();
//showMessageDailog nos saca un msgbox que cerrar la acción al darle a aceptar       
JOptionPane.showMessageDialog(null, "SE DETIENE AL DAR EN ACEPTAR");
         System.exit(0);
     }
}

class reloj implements ActionListener{
    
     int seg=0; int min=0; int hor=0;
     public void actionPerformed (ActionEvent e) {
        
         Date miHora = new Date();
if(seg<60){seg++;System.out.println(hor+":"+min+":"+seg);}
if (seg>59)   {min++;seg=00;}
if (min>60)   {min=00;hor++;}
if (hor==24) {seg=0;min=0;hor=0;}
        
     }
}

lunes, 25 de diciembre de 2017

Iniciarse al los lenguajes de programción

En un principio yo creía que programar era poner unos y ceros. Que los programadores eran unos locos muy listos que sabían muchas cosas. Hoy en día las cosas ya no son así. Lástima es posible que se os haya caído un mito como a mí.
Cuando tu construyes una viviendo no te pones a fabricar los azulejos y los ladrillos, ni fabricas tus grifos,  ¿verdad? Existe una serie de personas que lo han hecho y tu tan solo tienes que poner esos ladrillos, el fontanero pondrá los grifos y el electricista los enchufes.

En programación sucede algo parecido.  Existen lenguajes que se acercan más a los unos y los ceros pero lo más común es que no sea así. Contra más cercano al 0001 100 000 este se dirá que son lenguajes bajo nivel y contra más cercano a instrucciones de texto se dirá que son lenguajes de alto nivel.




Al fin y al cabo programar es escribir un guion de lo que deseamos que realice un ordenador. Tendremos que aprender una sintaxis a la forma de escribir una forma de llamar a las cosas y en qué momento hacerlo.

En cuanto a ¿Cómo escribimos esas instrucciones? Tú podrías escribirlas en el block de notas pero sería muy incómodo.



 Para hacernos la vida mucho más fácil y poder trabajar en una interface mucho más cómoda existen los entornos de desarrollo integrado (IDE). Estos editores contienen correctores de texto, avisos de sintaxis incorrecta… Algo parecido a lo que hace worck a groso modo vamos.

Por ejemplo yo ahora estoy aprendiendo java, existe un programa que es eclipse que se utiliza para escribir código en java (programar). Cuando empieces a utilizarlo veras las inmensas ventajas.



Como veras no es algo tan complicado, es como aprender un idioma, cuesta aprenderlo pero tampoco es necesario ser un genio tan solo es cuestión de trabajo.

FUNCIONES EXCEL

Función
Descripción Ver detalle
AHORA()
Devuelve la fecha y la hora actual
AÑO(núm_de_serie)
Devuelve el año en formato año
DIA(núm_de_serie)
Devuelve el día del mes
DIAS360(fecha_inicial;fecha_final;método)
Calcula el número de días entre las dos fechas
DIASEM(núm_de_serie;tipo)
Devuelve un número del 1 al 7
FECHA(año;mes;día)
Devuelve la fecha en formato fecha
FECHANUMERO(texto_de_fecha)
Devuelve la fecha en formato de fecha
HORA(núm_de_serie)
Devuelve la hora como un número del 0 al 23
HORANUMERO(texto_de_fecha)
Convierte una hora de texto en un número
HOY()
Devuelve la fecha actual
MES(núm_de_serie)
Devuelve el número del mes en el rango del 1 (enero) al 12 (diciembre)
MINUTO(núm_de_serie)
Devuelve el minuto en el rango de 0 a 59
NSHORA(hora;minuto;segundo)
Convierte horas, minutos y segundos dados como números
SEGUNDO(núm_de_serie)
Devuelve el segundo en el rango de 0 a 59
CARACTER(número)
Devuelve el carácter específicado por el número
CODIGO(texto)
Devuelve el código ASCII del primer caracter del texto
CONCATENAR(texto1;texto2;...;textoN)
Devuelve una cadena de caracteres con la unión
DECIMAL(número;decimales;no_separar_millares)
Redondea un número pasado como parámetro
DERECHA(texto;núm_de_caracteres)
Devuelve el número de caracteres especificados
ENCONTRAR(texto_buscado;dentro_del_texto;núm_inicial)
Devuelve la posición inicial del texto buscado
ESPACIOS(texto)
Devuelve el mismo texto pero sin espacios
EXTRAE(texto;posicion_inicial;núm_caracteres)
Devuelve los caracteres indicados de una cadena
HALLAR(texto_buscado;dentro_del_texto;núm_inicial)
Encuentra una cadena dentro de un texto
IGUAL(texto1;texto2)
Devuelve un valor lógico (verdadero/falso)
IZQUIERDA(texto;núm_de_caracteres)
Devuelve el número de caracteres especificados
LARGO(texto)
Devuelve la longitud del texto
LIMPIAR(texto)
Limpia el texto de caracteres no imprimibles
MAYUSC(texto)
Convierte a mayúsculas
MINUSC(texto)
Convierte a minúsculas
Función
Descripción Ver detalle
MONEDA(número;núm_de_decimales)
Convierte a moneda
NOMPROPIO(texto)
Convierte a mayúscula la primera letra del texto
REEMPLAZAR(texto_original;num_inicial;núm_de_caracteres;texto_nuevo)
Reemplaza parte de una cadena de texto por otra
REPETIR(texto;núm_de_veces)
Repite el texto
SUSTITUIR(texto;texto_original;texto_nuevo;núm_de_ocurrencia)
Reemplaza el texto con texto nuevo
T(valor)
Comprueba que el valor es texto
TEXTO(valor;formato)
Convierte un valor a texto
VALOR(texto)
Convierte un texto a número
DB(costo;valor_residual;vida;periodo;mes)
Devuelve la depreciación de un bien para un período especificado, método de depreciación de saldo fijo
DDB(costo;valor_residual;vida;periodo;factor)
Devuelve la depreciación de un bien para un período especificado, mediante el método de depreciación por doble disminución de saldo
DVS(costo;valor_residual;vida;periodo_inicial;periodo_final;factor;sin_cambios)
Devuelve la depreciación de un bien para un período especificado, incluyendo periodos parciales
INT.PAGO.DIR(tasa;periodo;nper;va)

NPER(tasa;pago;va;vf;tipo)

PAGO(tasa;nper;va;vf;tipo)
Devuelve el pago de un préstamo basado en pagos y tasas de interés constantes
PAGOINT(tasa;periodo;nper;va;vf;tipo)
Devuelve el interés pagado por una inversión durante periodo determinado
PAGOPRIN(tasa;periodo;nper;va;vf;tipo)
Devuelve el pago de un capital de una inversión determinada
SLN(costo;valor_residual;vida)
Devuelve la depreciación por método directo de un bien durante un período dado
SYD(costo;valor_residual;vida;periodo)
Devuelve la depreciación por método de anualidades de un bien durante un período específico
TASA(nper;pago;va;vf;tipo;estimar)
Devuelve la tasa de interés por periodo de un préstamo o una inversión
TIR(valores;estimar)
Devuelve la tasa interna de retorno de una inversión para una serie de valores en efectivo
TIRM(valores;tasa_financiamiento;tasa_reinversión)
Devuelve la tasa interna de retorno modificada
VA(tasa;nper;pago;vf;tipo)
Devuelve el valor actual de una inversión
VF(tasa;nper;pago;vf;tipo)
Devuelve el valor futuro de una inversión basada en pagos periódicos y constantes más una tasa de interés constante
VNA(tasa;valor1;valor2;...)
Devuelve el valor neto actual de una inversión a partir de una tasa de descuentos y una serie de pagos futuros
Funciones matemáticas y trigonométricas
ABS(número)
Devuelve un número entre 0 y 1
ALEATORIO()
Devuelve el número de combinaciones para un número determinado de elementos
COMBINAT(número;tamaño)
Devuelve el coseno de un ángulo
COS(número)
Redondea un número hasta el entero inferior más próximo
ENTERO(número)
Realiza el cálculo de elevar "e" a la potencia de un número determinado
EXP(número)
Devuelve el factorial de un número
FACT(número)
Devuelve el número pasado en formato decimal a número Romano
NUMERO.ROMANO(número,forma)
Devuelve el valor de la constante pi
PI()
Realiza el cálculo de elevar un número a la potencia indicada
POTENCIA(número;potencia)
Devuelve el resultado de realizar el producto de todos los números pasados como argumentos
PRODUCTO(número1;número2;...)
Devuelve la raiz cuadrada del número indicado
RAIZ(número)
Devuelve el resto de la división
RESIDUO(número;núm_divisor)
Devuelve el resto de la división
Funciones estadísticas
MEDIA.ARMO(número1;número2;...)
Devuelve la media armónica de un conjunto de números positivos
MAX(número1;número2;...)
Devuelve el valor máximo de la lista de valores
MIN(número1;número2;...)
Devuelve el valor mínimo de la lista de valores
MEDIANA(número1;número2;...)
Devuelve la mediana de la lista de valores
MODA(número1;número2;...)
Devuelve el valor que más se repite en la lista de valores
PROMEDIO(número1;número2;...)
Devuelve la media aritmética de la lista de valores
VAR(número1;número2;...)
Devuelve la varianza de una lista de valores
K.ESIMO.MAYOR(matriz;k)
Devuelve el valor k-ésimo mayor de un conjunto de datos
K.ESIMO.MENOR(matriz;k)
Devuelve el valor k-ésimo menor de un conjunto de datos
Funciones lógicas
FALSO()
Devuelve el valor lógico Falso
VERDADERO
Devuelve el valor lógico Verdadero
SI(prueba_logica;valor_si_verdadero;valor_si_falso)
Devuelve un valor u otro, según se cumpla o no una condición
NO(valor_lógico)
Invierte el valor lógico proporcionado

Descripción Ver Detalle
Y(valor_logico1;valor_logico2;...)
Comprueba si todos los valores son verdaderos
O(valor_logico1;valor_logico2;...)
Comprueba si algún valor lógico es verdadero y devuelve VERDADERO
Funciones de información
ESBLANCO(valor)
Comprueba si se refiere a una celda vacía
ESERR(valor)
Comprueba si un valor es un error
ESLOGICO(valor)
Comprueba si un valor es lógico
ESNOTEXTO(valor)
Comprueba si un valor no es de tipo texto
ESTEXTO(valor)
Comprueba si un valor es de tipo texto
ESNUMERO(valor)
Comprueba si un valor es de tipo numérico
TIPO(valor)
Devuelve un número que representa el tipo de datos del valor

Buscar este blog

Sandisk y Western Digital