lunes, 20 de abril de 2015

Programacion C# - Manejo de Archivos

Inicio


Para este post veremos lo que es el manejo de archivos desde una aplicacion en lenguaje C#
a su vez tambien ver las propiedades del archivo, su manejo  y llamado a procesos


para iniciar debemos tener una aplicacion  diseñada de esta manera



y en la clase de form  llamar a los debidos names spaces



Desarrollo 


 El botón del llamado a las ruta

este metodo resive  una sobre carga de tipo control label   y una sobre carga de tipo opcional booleana

el metodo dentro tiene una estructura de seleccion  para lo cual esta  de ser cierta abrira un savedialog
 de lo contrario abrira un folderbrowserdialog

en el llamado de este metodo especificamos el control label que queremos modificar  y le decimos si abrira un filesavedialog o un folderbrowsedialog con una simple variable boleana




 una vez hehco los metodo que buscan las rutas de los archivos ahora trabajaremos con el metodo que trabajara directamente con los archivos
declaramos un metodo que resiva un int como so0bre carga la cual sera evaluada  en un bloque switch. Atencion: En ocaciones si la aplicacion no tiene permisos de administrador o el dico objetivo esta portegidono se podran realizar ningunas de las actividades con los archivos



dependiendo del valor del objeto se ejecutara un caso y en ese caso un bloque de codigo

para el caso uno de copiar archivo 


 la clase File de systems.io nos permite trabajar los archivos como   si estubieramos usandolos con el explorer.exe pero en este caso es la  aplicacion la que se encarga de hacer todo el trabajo en este caso usamos el metodo Copy() .resive tres sobrecargas La ruta del archivo objetivo que es la primer sobrecarga y la segunda que es el destino y por ultimo si queremos sobre escribir el archivo en caso de que ya exista en el destino 

para el caso 2 mover el archivo

   si es dos mueve o cortar y pegar usando el metodo Move de la clase file. este metodo Resive 2 sobrecargas, La ruta del archivo objetivo que es la primer sobrecarga y la segunda que es el destino


Caso 3 eliminar el archivo 


 si es 3 eliminau usando el metodo Delete de la clase file la sobrecarga que resive en este caso es solamente la ruta del arichivo, no pasa por la papelera de reciclaje

caso 4 Ejecutar el archivo

  en este caso usamos la clase process que nos permite a la aplicacion poder sobre    el ambiente de trabajo referente a los procesos del sistema operativo en este caso el metodo start nos permite llamar una aplicacion 
                         al llamarla se ejecutara con la aplicacion que tiene asignada por defecto
                         es decir que si llamamos a un .txt con el metodo Start() entoces el sistema
                         operativo resive el comando y lo ejecuta llamando al archivo y abriendolo con la aplicacion que tienen asignada para esa extencion en este caso por lo general es el bog de notas

process :Proporciona acceso a los procesos locales y remotos y le permite iniciar y detener los procesos del sistema local.
Para ver el código fuente .NET 


caso 5 Abrir la ruta del archivo


   la calse FileInfo nos da datos sobre el archivo en este caso queremos saberla ruta donde se encuentra el archivo objetivo  una vez con ello  llamamos al metodo STart de la clase process en ella  le pasaremos la ruta donde esta contenido el archivo el metodo start detecta que no es una aplicacion pero si una ruta por lo tanto lo ejecuta con el explorer.exe 




Ejemplo



ejemplo de manejo de archivos




domingo, 19 de abril de 2015

Programacion C# Rescatando Datos de MS Access

Programación C# Rescatando Datos de MS Access 



Lo que haremos aqui es rescatar datos que se encuentran contenidos dentro de una base de datos access y visualizarlos dentro del programa. Antes que nada debemos entrar a la base de datos access e ingresar algunos datos  para poder rescatarlos después con usando el programa


en la tabla de carreras ingresaremos  id  y nombre de carreras en este caso usare las del instituto


Y en la tabla de  Estudiante introduciré algunos ejemplos a la asar de mi imaginación como prueba



Desarrollo

En nuestro proyecto que podria ser el anterior ( conectar a una base de datos access) 
añadiremos un control datagridview y un control combobox.




En la clase donde se realizara la conexion se agregara un metodo en este caso se llama Traer_datos_de_acess_estudiantes. este metodo se encarga de devolver el resultado de una sentencia sql Select ejecutada en la base de datos.


El objeto datatable nos permite almacenar elemento en forma de tabla con lineas y columnas  esto es lo mas similar a un arreglo matris pero con nombre de columnas y con indices en la filas. por otro lado es un objeto vacio que se adapta al diceño de cualquier resultado de una transaccional de base de datos.




Estudiaemos un poco lo que es la sentencia sql select:
select es un comando sql de base de datos que nos permite seleccionar ( valga la redundancia) los campor de determinada tabla para ello después de SELECT se coloca los nombre de los campos, en este caso * significa todo los campos de esa tabla , si llamaremos a ciertos y determinados campos entoces los separaríamos por comas cada un de los llamado campos. Luego la palabra from nos indica en que tabla se ejecutara es decir  seguida del nombre de la tabla la forma correcta es asi :

Select  [campo1] ,[campo2], [campo3 ] From [nombre de la tabla]

A continuacion este ejemplo seria un objeto string que contiene la sentencia sql select 

la clase OleDbDataAdapter:
Representa un conjunto de comandos de datos y una conexión de base de datos que se utilizan para rellenar DataSet y actualizar el origen de datos( base de datos) de tipo OleDB 

A esta clase se le instancia y se le especifica dos sobre cargas: le primera el objeto  sentencia de base de datos en nuestro caso un select y la segunda la conexión o sentencia de coneccion a la base de datos 


el metodo FILL ejecuta la sentencia de base de datos en el origen de datos especificado y captura el resultado, este es asignado directamente en un objeto datatset o datatable que es especificado como sobrecarga en el metodo.


para ello antes de ejecutar el llamado al metodo fill()  se debe abrir la coneccion a base de datos con el metodo open() del objeto coneccion ( conn ). Al finalizar el el bloque TRY  se cierra para que el hilo al origen de datos no quede abierto y se hace buen uso de los recursos y técnicas de programación.



igual haremos con el tabla de carrear apara este ejemplo varia solamente en que la sentencia llama resultados de esa tabla y no la de estudiantes 



dentro del boton  del formulario que trae los los resultado declaramos el evento click 
el esquema es el siguiente



Creamos dos datatables uno para estudiantes que alimentara el datagridview y otro el de carreras que alimentara el combobox



primero informamos que estamos buscando los datos al usuario
luego  con Application.doeventas() actualizamos todo lo referente a diceño y cambio de las propiedades de los controles.

A cada una de los objetos  datatables que creamos le asignamos el resultado del metodo que le corresponde  de la clase de conexión.





Para cargar los datos al DataGridView o grilla  usamos la propiedad DataSouse que sera el objeto Dt_estudiantes, ademas le especificamos que sea la vista por defecto que traer la tabla  ( o vista por defecto de los resultados del origen de datos)  





Al combobox le especificamos que la fuente de los datos sera el objeto datatable Dt_carreras, Y le especificamos que el miembro a mostrar ( digase el texto que se mostrara en la lista) sera la columna carrera de dicha fuente . Asi mismo se especifica el valor del miembro ( el valor  real del item seleccionado en el lista) con el nombre de la columna





Y el resultado es el sigueinte una Grilla con los datos de la tabla estudiantes y un ComboBox con los datos de la tabla Carreras.




Ejemplo



Referencias


programacion-c-conexion-con-m-accesss


miércoles, 8 de abril de 2015

UML Diagrama de clase

Introducción


En los diagramas de clases de UML, se describen el objeto y las estructuras de información que se utilizan en la aplicación, tanto de forma interna como en la comunicación con los usuarios. Esta información se describe sin hacer referencia a ninguna implementación concreta. Las clases y relaciones se pueden implementar de muchas maneras, por ejemplo, en tablas de bases de datos, en nodos XML o en composiciones de objetos de software.



Elementos que componen al diagrama:



la clase es el elemento princpal del diagrama compone el formato de creacion de los objetos ( los objetos son instancias de las clases). Con ellas modelamos los sistemas, estan reprecentadas de las sigueinte forma.

un rectangulo en vertical dividido en tres partes:

  1. Superior = nombre de la clase , 
  2. Media= propiedades o atributos y objetos de la clase 
  3. Inferior = metodos o procesos de la clases 

un ejemplo de un clase puede ser con el tema automotriz en el cual

  • la clase se llama carro
  • los atributos o propiedades son candidad de ruedas,motor y puertas
  • y los metodos u operaciones = encender ,andar y frenar

Las clases internamente poseen atributos y metodos internamente; Antes de continuar con atributos y metodos  debemos explicar los niveles de Protección de los elementos contenidos en la clase

  • publicas  {símbolo (+) } Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es accsesible desde todos lados.
  • privadas {símbolo (-)}  Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo pueden accesar).
  • protegidas  {símbolo (#)}Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser accesado por métodos de la clase además de las subclases que se deriven.

Atributos o propiedades 

son las características principales de la clase esta pueden, si la clase fuese mesa sus propiedades o atributos seria

  • cantidad de patas de la mesa, 
  • color de la mesa ,
  •  alto de la mesa
  •  etc.


 Estas propiedades  caracterizan a la clase de otra clases y son heredarles. Al igual tiene un tipo de dato basico ( string ,int ,decimal, float ,boolean) para poder saber distinguirla y hacer uso correctas de ellas a su vez  possen un nivel de Protección que nos indican hasta que nivel llega su uso en el sistema por instancias y clases deribadas


Metodos u Operaciones 


es el la seccion inferior del rectangulos, y nos indica que Hace la clase. en el ejemplo anteriro lo realize con la mesa en este caso volvemos al ejemplo del carro. La clase carro posee operaciones o metodos que ella relaiza al ser llamado ese metodo por una instancia y su interaccion con otras clases del diagrama, un ejemplo de metodo seria


  • andar
  • frenar
  • encender
  • apagar
Siguiendo la esquematizan de c++ los metodos no inidican que tipo de dato son pero si indican si devuelven o no dato alguno para determinar esto  se coloca el ejemplo de andar de la clase carro, si fuese un metodo que devuelve dato se coloca asi: Andar() de lo contrario si no devolviese dato alguno fuese asi andar(): void  indicando que si es método mas no devuelve dato. A su vez estos metodos possen un nivel de proteccion determinado 

Relaciones entre las clases 


Existen diversos tipos de relaciones y cardinalidad entre las clases en el diagrama de clases empezemos por explicar lo que son las Cardinalidades:


Cardinalidades

indica el grado y nivel de dependencia, se anotan en cada extremo de la relación y éstas son:


  • uno o muchos: 1..* (1..n)
  • 0 o muchos: 0..* (0..n)
  • número fijo: m   (m denota el número).

Relaciones de Herencia  


Indica que una subclase hereda los métodos y propiedades  especificados por una Super Clase, por ende la Subclase además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles de la Super Clase (public y protected)


Agregación



Para modelar objetos complejos, n bastan los tipos de datos básicos que proveen los lenguajes: int, decimales y string . Cuando se requiere componer objetos que son instancias de clases definidas por el desarrollador de la aplicación, tenemos dos posibilidades:


  • Por Valor: Es un tipo de relación estática, en donde el tiempo de vida del objeto incluido esta condicionado por el tiempo de vida del que lo incluye. Este tipo de relación es comunmente llamada Composición (el Objeto base se contruye a partir del objeto incluido, es decir, es "parte/todo").



  • Por Referencia (ref): Es un tipo de relación dinámica, en donde el tiempo de vida del objeto incluido es independiente del que lo incluye. Este tipo de relación es comunmente llamada Agregación (el objeto base utiliza al incluido para su funcionamiento).
La flecha en este tipo de relación indica la navegabilidad del objeto refereniado. Cuando no existe este tipo de particularidad la flecha se elimina.

En este ejemplo una ciudad tiene un areopuerto pero se puede dar el caso de que una ciudad tenga mas de un areopuerto



Asociación

La relación entre las clases conocidas como Asociación permite asociar objetos que colaboran juntos. Significativamente , no es una relación fuerte , es decir , el tiempo de vida de un objeto depende de la otra .





Una mesa puede tener asociada  muchas sillas en cambio una silla tendra una unica mesa

Instanciación (uso)


Representa un tipo de relación muy particular, en la que una clase es instanciada (su instanciación es dependiente de otro objeto/clase). Se denota por una flecha punteada.

El uso más particular de este tipo de relación es para denotar la dependencia que tiene una clase de otra, como por ejemplo una aplicación grafica que instancia una ventana (la creación del Objeto Ventana esta condicionado a la instanciación proveniente desde el objeto Aplicacion):




Cabe destacar que el objeto creado (en este caso la Ventana gráfica) no se almacena dentro del objeto que lo crea (en este caso la Aplicación, de lo contrario se crea un nuevo objeto en el sistema ).



Clase Abstracta


Una clase abstracta se denota con el nombre de la clase y de los métodos con letra "itálica". Esto indica que la clase definida no puede ser instanciada pues posee métodos abstractos (aún no han sido definidos, es decir, sin implementación). La única forma de utilizarla es definiendo subclases, que implementan los métodos abstractos definidos.




Parametro de las Clases


Una clase parametrizada se denota con un subcuadro en el extremo superior de la clase, en donde se especifican los parámetros que deben ser pasados a la clase para que esta pueda ser instanciada. El ejemplo más típico es el caso de un Diccionario en donde una llave o palabra tiene asociado un significado, pero en este caso las llaves y elementos pueden ser genéricos. La genericidad puede venir dada de un Template (como en el caso de C++) o bien de alguna estructura predefinida (especialización a través de clases).






En este diagrama se puede apreciar lo siguiente
La clase persona es una clase abstracta que generara en herencia cliente y empleados ambos son personas heredadondo todo desde la superclase y possen elementos propios como +mostrar()


  • Empleado tiene elementos privados como sueldo__bruto y metodos publicos como calcular salario neto()



  • directivo es una clase que hereda de empleado sin embargo tiene una relacion con empleado de tipo subordinado indicando un nivel de rango empresarial superior dada por la logica de negocios del sistema



  • cliente esta relacionado con empresa donde es una relacion agregacion donde el tipo de dato es la clase en si



  • empresa tiene una relacion a su vez tambien de agregacion con empleados



El diagrama nos describe entonces lo siguiente. una empresa tiene empleados y clientes que son personas, a su vez existen empleados con mayor rango que son superiores directivo. la relacion de empleado y empresa es uno a muchos aunque no se muestra es la logica sin embargo se maneja el tipo de empleado de esa empresa a su vez igual con clientes.


Apoyado sobre el material 
http://users.dcc.uchile.cl/~psalinas/uml/modelo.html

NestJs Error on SecretKey for JWToken

  Imagine this you are coding happy, configuring your module has   auth.module.ts   using on your register the classic call to get env value...