Seguidores

MIS WEBS



lunes, 30 de abril de 2018

USO DE ACCES Y EXCEL EN EL ENTORNO LABORAL


 ACCES Vs. EXCEL


¿Qué diferencia existe entre Excel y Access?

Excel es un programa diseñado y pensado para realizar cálculos matemáticos mientras que Access se pensó para el uso y tratamiento de Bases de Datos (BBDD).

El uso de Excel en las oficinas está muy extendido, pero en muchas ocasiones se sobredimensiona utilizando para todo.  Cada vez más las empresas se empiezan a dar cuenta de que existen otras herramientas que nos hacen perder mucho menos tiempo de trabajo.

El uso de aplicaciones web con formularios gana cada día más terreno. Esos datos serán tratados por detrás con SQL y el usuario no tendrá que saber cómo sucedió. Pero es verdad que en ocasiones nos hace falta realizar cruces de datos in situ. Y no van a programarnos una web en 20 min. Para eso tenemos Access, para trabajar con BBDD en local.

Excel está diseñado como una hoja de cálculo y si bien es verdad que en versiones actuales dispone de una mayor cantidad de celdas (1.048.576 filas y 16.384 columnas). No se diseñó para soportar BBDD.  Dispone de herramientas como pueden ser las gráficas que pueden resultar muy potentes, lo podemos utilizar para generar cuadrantes, pequeños cálculos contables, nos permite modificar a mano registros copiando y pegando, realizar cálculos en tiempo real... Pero el uso de tablas dinámicas para cruzar datos lo hacen muy pesado y lento en poco tiempo.

Diseñar un formulario en Excel es un trabajo largo y que nos obliga a utilizar VBA (Visual Basic For Aplication).




 Sé que están muy de moda los funnel  con Excel y si bien es verdad que son visualmente muy llamativos, en cuanto a funcionalidad en tratamiento de datos, para mi gusto dejan mucho que desear.
Personalmente prefiero dejarlo como interfaz gráfica si no dispongo de otra herramienta y cruzar los datos en Access. Cuesta menos importar y luego exportar esos datos a Access que pretender manejarlos con tablas dinámicas y fórmulas tipo BuscarV() o Contar.SI(). Estas fórmulas pueden resultar útiles en una consulta rápida,  pero muy lentas si las queremos utilizar sobre una tabla extensa.

Un formulario en Access se puede realizar muy rápidamente, sin código y será más eficiente y rápido. Podrá importar archivos de una forma más sencilla, automatizada y rápida. Disponemos de macros preestablecidas que nos ahorran mucho trabajo. Consultas por defecto y las que nosotros deseemos generar con asisten o si lo preferimos y disponemos de los conocimientos utilizando directamente SQL.

Luego si deseamos tratar gráficamente esos datos o realizar cálculos matemáticos con ellos podemos exportarlo a Excel y tratarlos allí. A pesar de que Access también está preparado para soportar cálculos en consultas.

En el caso de que deseemos realizar un informe, Access nos presta herramientas que nos lo hacen de forma automática, si bien es verdad que me gustan más las gráficas de Excel, Access también dispone de ellas si en un momento dado deseamos anclarlas a nuestro informe y nos permitirá exportar un PDF con ambos.



¿Por qué se ralentiza Excel en uso compartido?

Cuando lo usamos en compartido suele ralentizarse bastante debido a que cada uno de los usuarios que lo está utilizando va cargando el cache o buffer y antes de darnos cuenta empieza a costar guardar una eternidad.

Para solucionar este problema tenemos que pedir a los usuarios que cierren el programa. El último en cerrar lo tiene que quitar de compartido y volverlo a poner en compartido una vez quitado. Veremos de esa forma como el tamaño de nuestro archivo se reduce a una cuarta parte y cuando se abre cuesta mucho menos cargar. Esto no pasa cuando varios usuarios están trabajando con un formulario de Access.


¿Qué es mejor utilizar Access o Excel?


Personalmente pienso que cada una de las herramientas es útil si la utilizamos para lo que fue pensada. Creo que lo mejor que se puede hacer es utilizarlas simultáneamente e ir saltando de una a la otra según las necesidades.

Yo trabajo a diario con exportados de gran volumen. Esos archivos me llegan vía web bien en formato. xlsx  (Excel) como csv (archivos texto que representa una tabla separada por , o ;). Los trato con Access modificando su contenido, filtro automáticamente, importo de forma automatizada y exporto otra vez a Excel de forma automática para que lo trabajen los compañeros. 

Sé que Access en un principio se hace más complejo pero cuando aprendes a sacarle rendimiento ahorras muchas horas de trabajo repetitivo. Tienes acceso a multitud de archivos desde el mismo formulario. Y si controlas código VBA aún le puedes sacar mucho más partido.




viernes, 27 de abril de 2018

APUNTES JAVA en PDF 2018


APUNTES JAVA PDF IMPRIMIBLE GRATIS




En el siguiente articulo os dejo la ultima actualización de mis apuntes de java espero que os puedan ser de utilidad. Si alguien ve en ellos errores que me lo indique para poder seguir aprendiendo. Empiezo desde cero dando un pequeño paso por los tipos primitivos Manejo de la clase String y sus diferentes métodos la clase Math con la que podemos realizar cálculos matemáticos. Aprendo desde cero el uso de los array, ArrayList. Doy un pequeño repaso de los bucles for. Como crear Frames y los diferentes diseños de lámina (Layots).  Incluyo un ejercicio en que genero un procesador de textos desde cero.  Realizo un paso por los tratamientos de errores, manejo de los Buffer, hilos de ejecución.
Todos los ejercicios que aparecen los he probado y me funcionan os pueden ser útiles para practicar si lo deseáis. Creo que la única forma de aprender a programar es generando código. Es posible que sea como aprender un idioma práctica, práctica y más práctica.

Por el camino he ido aprendiendo, incluyendo vídeos  he intentando mejorar la presentación de mis apunte. 

En la parte inferior tenéis un pdf que podéis imprimir o ver en pantalla. Si decidís leerlo desde tablet u ordenador tenéis los links

Muchas gracias a todo el mundo espero que os pueda ser útil.
Si os gusta intentaré ir cargando los apuntes que genere en la siguiente dirección https://cvdgp.blogspot.com.es/.








domingo, 22 de abril de 2018

Clase ArrayList java


 ArrayLis

¿Que es un arrayList?


ArrayList implementa la lista con arreglos linkeados, lo que la hace muy eficiente para recorrer pero ineficiente para insertar o eliminar elementos que se no encuentren en el final.

Sintaxis de un arrayList


Tenemos que tener en cuenta que no nos dejará utilizar variables de datos primitivos, para poderlo utilizar datos primitivos tenemos que crear una clase envoltorio.



Constructores:

ArratList()

Cuando utilizamos este constructor nuestro array se diseña para almacenar 10 elementos, cuando escemos este tamaño nos deja almacenarlos, pero optimizaremos mal el espacio en memoria ya que cada vez que excedan 10 elementos creará un espacio en memoria que ira aumentando dinámicamente.

ArrayList<Tipo_dato_almacenado> Nombrea_ArrayList = new ArrayList <Tipo_dato_almacenado>();









Métodos :


Add() : incluirá un registro en nuestro ArrayList
public class EjemploArrayList {
       public static void main(String[] args) {
ArrayList<Tipo_dato_almacenado> Nombrea_ArrayList = new ArrayList <Tipo_dato_almacenado>();

             Nombrea_ArrayList.add(new Tipo_dato_almacenado("xxx",20000,1));
             Nombrea_ArrayList.add(new Tipo_dato_almacenado("qq",500,10));
             Nombrea_ArrayList.add(new Tipo_dato_almacenado("dd",8000,5));
             Nombrea_ArrayList.add(new Tipo_dato_almacenado("rr",989898,2));
             Nombrea_ArrayList.add(new Tipo_dato_almacenado("rt",258258,3));
             Nombrea_ArrayList.add(new Tipo_dato_almacenado("t",8888888,12));
       }
}
class Tipo_dato_almacenado {
       String TEXTO;int numero;int numero2;
       public Tipo_dato_almacenado(String TEXTO, int numero, int numero2) {
             this.TEXTO = TEXTO;this.numero= numero;this.numero2=numero2;
       }
}
Iterator(): Recorrea nuestro arrayList
Size(): Nos dice cual es el tamaño de nuestro ArrayList, cuantos registros contiene.
Nombre_ArrayList.size()

trimToSize(): Si ponemos esta instrucción al final de nuestro array liberará espacio en memoria.

Nombre_ArrayList.trimToSize();

Set(posición elemento, elemento):  lo utilizaremos en lugar del add cuando deseemos poner el nuevo registro en una posición determina de nuestro ArrayList. Así pondríamos este registro en la posición 1 de nuestro arrayList
       Nombre_ArrayList.set(0, new Tipo_dato_almacenado("xxx",20000,1));

Así pondríamos este registro en la posición 5 de nuestro arrayLis.
       Nombre_ArrayList.set(4, new Tipo_dato_almacenado("xxx",20000,1));



get(index):  Obtener elemento que se encuantra en una posición determinada.
             Nombre_ArrayList.get(5);

ensureCapacity(minCapacity): Le indicamos a nuestro arraylist que capacidad ha de tener, para evitar que gaste mas recursos de los necesarios.
             Nombre_ArrayList.ensureCapacity(Nombre_ArrayList.size());

Iterator(): Recorrea nuestro arrayList. Este método nos regresará un objeto de tipo iterator que es una interface que tiene java con unos métodos útiles para recorrer arrayList.

         Métodos Interface Iterator

  • Hasnext(): Nos indica si tienermo un registro tras el actual.Nos regresará un boolean.
  •  Next() : Nos regresará el siguiente elemento de la colección.
  •  Remove(): Eliminará el elemento con que estemos interaccionando en ese momento.
Iterator <Tipo_dato_almacenado> xxx = Nombre_ArrayList.iterator();
             while(xxx.hasNext()) {
                    System.out.println(xxx.next().EsDAto());

             }

Come recorrer un arrayList con un bucle for


public class EjemploArrayList {
        public static void main(String[] args) {
ArrayList<Tipo_dato_almacenado> Nombre_ArrayList = new ArrayList <Tipo_dato_almacenado>();
                Nombre_ArrayList.add(new Tipo_dato_almacenado("xxx",20000,1));
                Nombre_ArrayList.add(new Tipo_dato_almacenado("qq",500,10));
                Nombre_ArrayList.add(new Tipo_dato_almacenado("dd",8000,5));
                Nombre_ArrayList.add(new Tipo_dato_almacenado("rr",989898,2));
                Nombre_ArrayList.add(new Tipo_dato_almacenado("rt",258258,3));
                Nombre_ArrayList.add(new Tipo_dato_almacenado("t",88888888,12));             
                Nombre_ArrayList.set(0, new Tipo_dato_almacenado("xxx",20000,1));
                        for(int i=0;i<Nombre_ArrayList.size();i++) {
                        System.out.println(Nombre_ArrayList.get(i).EsDAto());
                }
        }
}
class Tipo_dato_almacenado {
        String TEXTO;
        int numero;
        int numero2;
        public Tipo_dato_almacenado(String TEXTO, int numero, int numero2) {
                this.TEXTO = TEXTO;this.numero= numero;this.numero2=numero2;
        }      
        public String EsDAto() {
return "El texto es  "+ TEXTO+"\n El nuero 1 es  "+numero+"\n El numero 2 es   "+numero2;
        }
}



Ejmplo 
ArrayList:

package mis_frames;
import java.util.*;
public class array {
        public static void main(String[] args) {
                List<String> i = new ArrayList<String>();
                i.add("z");
                i.add("x");
                i.add("a");
                i.add("b");
       
                Iterator<String> x = i.iterator();
        while(x.hasNext()) {
             System.out.println(x.next());
        }
    }
}



Si lo queremos recorrer con un ForEach


for(Tipo_dato_almacenado z:Nombre_ArrayList) {
         System.out.println(z.EsDAto());
     }

Utilizando Iterator:



Iterator <Tipo_dato_almacenado> xxx = Nombre_ArrayList.iterator();
             while(xxx.hasNext()) {
                    System.out.println(xxx.next().EsDAto());
             }

TRATAMIENTO DE FICHEROS Y DIRECTORIOS EN JAVA


  FICHEROS Y DIRECTORIOS

Para poder abrir, grabar, sobreescribir un fichero necesitamos poder acceder a ellos, saber que extensión tiene, que propiedades tienen (lectura, lectura/escritura, solo lectura), donde se localizan….
Para poder hacer todas estas operaciones necesitaremos la clase File. Todos estos métodos si lo aplicamos a copiar y pegar con un buffer nos facilita potentes herramientas. tengo un ejercicio de un procesador de textos con java en cuanto tenga un rato lo aplicaré.

CLASE FILE


La clase file es muy extensa pero existen varios métodos que nos pueden ser útiles:

Métodos:

·         GetAbsolutPath() : Nos regresará un String con la ruta absoluta del archivo.

·         Exists() : Nos indicará si existe el archivo regresándonos un boolean (true or False).

·         canRead(): Nos regresa un boolean que indica si el archivo es solo lectura o no.

·         canWrite():Nos regresa un boolean que indica si el archivo puede ser escrito o no.

·         Delete(): Borra un archivo directorio especificado en una ruta de un objeto File.

Ruta_Archivos = new File("C:"+File.separator+"Users"+File.separator+"dagip"+File.separator+"Desktop"+File.separator+"BOGEER"+File.separator+"imagenes"+File.separator+"video" File.separator+”archivox xx.text”);
Ruta_Archivos. Delete();

·         list(): Nos regresará un array de String con los archivos y carpetas de la ruta
public static void main(String[] args) {         
 Ruta_Archivos = new File("C:\\Users\\d\\Desktop\\BOGEER\\s\\video");
 String[]  Archivos = Ruta_Archivos.list();
 for (int i =0; i<Archivos.length;i++) {
    System.out.println(Archivos[i]);
 }

·         separator: Sustituye la barra / en la dirección que estamos marcando, esto evitará que en caso de estar otro sistema operativo diferente a windows lea la ruta.
Ruta_Archivos = new File("C:"+File.separator+"Users"
                              +File.separator+"dagip"                                         +File.separator+"Desktop"
                              +File.separator+"BOGEER"
                                        +File.separator+"imagenes"
                              +File.separator+"video");

·         getCanonicalPath():

·         mkdir(): Creará un directorio o carpeta en la ruta indicada.
Nueva_Carpeta = new File ("C:"+File.separator+"Users"
                                  +File.separator+"dagip"
                                  +File.separator+"Desktop"
                                  +File.separator+"BOGEER"
                                  +File.separator+"imagenes"
                                  +File.separator+"video"
                                  +File.separator+"CARPETA CREADA POR JAVA");
 Nueva_Carpeta.mkdirs();


·         createNewFile (): Creará un nuevo archivo, nos lanzara una excepción de tipo IOException por lo que tenemos que poner un try/catch
Nueva_Carpeta = new File ("C:"+File.separator+"Users"
                    +File.separator+"dagip"
                    +File.separator+"Desktop"
                    +File.separator+"BOGEER"
                    +File.separator+"imagenes"
                    +File.separator+"video"
                    +File.separator+"CARPETA archivo.txt");
try {
       Nueva_Carpeta.createNewFile();
} catch (IOException e) {
              e.printStackTrace();
}

·         isDirectory(): Nos regresará un boolean que valora si es una carpeta (directorio) o no. Si lo introducimos en un for nos permitiría lista los archivos de esa carpeta.

  if (Archivos_dentroCarpeta.isDirectory()) {
           Archivos2=Archivos_dentroCarpeta.list();




Constructores:

File(String Pathname) : Pasaremos por parámetros un String con la ruta de acceso.
File  Ruta_Archivos = new File("C:\\Users\\x\\Desktop\\x\\imagenes\\video");

File(String parent. String child): Le pasamos por parámetros una ruta principal que es la carpeta donde esta nuestro archivo y una ruta hijo que será el archivo o carpeta que selecionamos.
 Archivos_dentroCarpeta=new File(C:\\Users\\x\\Desktop\\x\\imagenes”,”\video”);


Buscar este blog

Sandisk y Western Digital