sábado, 28 de septiembre de 2013

Investigación 

Pasar varibles de una pagina php a otra: 


Código empleado:

Pagina.php que lo envia: 

      session_start();  
      $_SESSION['valores'] = $varObtenerTipo;

Donde $varObtenerTipo; es el arreglo que se va a enviar.

Pagina.php que la recibe: 

       session_start(); 
       $mi_array = $_SESSION['valores']; 
$b = $mi_array[0];
echo "Largo de la lista... ".count($mi_array)."<br />"; // Largo de la lista
echo "Nombre ".$b['Nombre']; // Para saber el nombre del primer elemento de la lista que se recibio
                                                        // si es que tiene elementos

Cristian Araya
David Vargas

Horas empleadas: 1

viernes, 27 de septiembre de 2013

AVANCE: Migrar Datos de Excel a una Base de Datos Prueba

Se nos entregaron los siguientes archivos de Excel:

  • TablaHistorial
  • TablaUsuario
  • TablaVentas

Y se entregan varios archivos .txt haciendo referencia a los libros y su contenido
Se realiza con los tres archivos de excel, lo mencionado en la investigación que esta en la entrada anterior. De la cual obtenemos las siguientes tres tablas:


Cristian Araya
David Vargas

Horas Laboradas: 5horas

INVESTIGACION: Documento de Excel a una tabla en SQL

Tenemos el siguiente Excel y queremos trasladar estos datos a una base de datos en SQL Server.

Nos vamos a Microsoft SQL Server Management y le damos click derecho en una base de datos y seleccionamos la opción Tareas.

Se selecciona la opción importar datos


Aparecerá la siguiente ventana donde tenemos que elegir el documento de Excel y elegir la versión de Excel, así como seleccionar la opción que viene.


Se selecciona el destino tanto como el servidor como la base de datos


En la siguiente ventana podremos elegir copiar toda la tabla, o bien escribir una consulta para solo agregar algunos datos

Luego se seleccionan las pestañas del archivo de Excel y la tabla a la que se va a transferir



Se elige la opción finalizar

A continuación se realizara el proceso, y podemos ir viendo paso por paso, y ver si algo falla, cuando todo ha sido exitoso se muestra la siguiente ventana

Y ahora podemos ver que nuestra nueva tabla esta creada, y consultamos los datos y vemos que son los que contenía el archivo de Excel.


INVESTIGACION: Conexion con credenciales explicitas

Como vimos en la entrada anterior, hay varias maneras de conectarse a una base de datos, en esta ocasión hablaremos de la conexión de credenciales explicitas. Se pueden realizar de dos maneras solicitando las credenciales o bien usar las credenciales predeterminadas.
Solicitando las credenciales, se piden los datos y se concatenan al string de conexión.
Para usar credenciales predeterminadas no es nada recomendable poner la información en el código, ya que cualquiera lo podría ver, para esto se recomienda guardarlas cifradas en el archivo Web.config o bien en el registro de Windows como una subclave personalizada.
Para guardarlo en el archivo Web.config se debe creer un apartado de la siguiente manera:

<appSettings>
   <add key="mappedname" value="MyWebAppUser"/>
   <add key="mappedkey" value="Aje$31"/>
</appSettings>

Y en la aplicación leemos las credenciales de la propiedad estática AppSettings.
Dim user As String = System.Configuration.ConfigurationSettings. _
    AppSettings("mappedname")

Cuando usamos C# hay que agregar esta referencia al proyecto,


Y se escriben los valores en el app.config.

Para ver un ejemplo completo y ejemplo de como hacerlo en el registro de windows podemos acceder al link que se encuentra al final de esta entrada.

Fuente: http://msdn.microsoft.com/es-es/library/aa984237(v=vs.71).aspx

INVESTIGACION: Botones Submit HTML

INVESTIGACION 

Submit Buttons

Multiples Botones Submit en un from de html

Problema: No se podían usar varios botones de tipo "Submit" de HTML porque cuando se seleccionaba cualquiera de ellos redireccionaban a la misma pagina y lo requerido era que cada uno lo hiciera a una diferente dependiendo de lo deseado en la aplicación.

Solución: Pagina consultada: Multiple submit buttons

Script:

<script>
    function submitForm(action)
    {
        document.getElementById('form1').action = action; // El id del form
        document.getElementById('form1').submit();
    }
</script>

Horas empleadas en la solucion: 3

Cristian Araya
David Vargas

AVANCE: AplicacionWeb

Aplicacion Web

Trabajo de implementación de la solución a la aplicación Web.


Los días trabajados: 19,20,23,24

Se realizó: o Búsqueda y investigación de los elementos de html y su forma de interactuar y compartir información con php.

o Investigación del lenguaje php

o Solución de problemas como lo fue implementar un Script con JavaScript a forms para el uso de multiples botones Submit.

o Llenado de un Select en HTML usando php con la base de datos.
Codigo:
En este caso se utilizó una variable global que fue cargada desde un metodo creado en una clase php, el cual llama un stored procedure y la carga con los tipos de datos de la base de datos creada



Cristian Araya
David Vargas

Horas Invertidas: 21

INVESTIGACION: Select de varias tablas

La instrucción select recupera filas de la base de datos y habilita la selección de una o varias filas o columnas de una o varias tablas. El poder y complejidad que tiene esta instrucción es de gran alcance, conocer todas las facilidades y clausulas que puede tener un insert nos facilitara la tarea a la hora de consultar datos o extraer datos de una base de datos.

En esta ocasión mostramos como usar un select para crear una tabla o una consulta, con la información de varias tablas. 


Como se puede observar estamos haciendo una consulta, donde queremos crear una tabla compuesta por información de otras tres tablas, donde cada tabla le ponemos un prefijo para ahorrarnos escribir mas, y comparamos elementos de las tablas, para tener lo que queremos.

Hay operadores como union, intersect y except entre otros que son importantes, y que en un futuro los aprenderemos.

INVESTIGACION: Reiniciando los datos en una base de datos

Muchas veces queremos reiniciar o volver los datos desde 0 en una base de datos, sin embargo muchas veces solo eliminamos los datos, y no reiniciamos la llave primaria, o bien en caso contrario reiniciamos la llave primaria pero no borramos los datos de la base datos, lo cual nos puede afectar nuestro trabajo ya que se crearía llaves repetidas.
Para volver una base de datos desde 0 se debe ejecutar los siguientes comandos:
   delete * from tabla
   DBCC CHECKIDENT (tabla, RESEED, 0) 

Mostramos un ejemplo, se tiene la tabla persona con los siguientes datos:


Se borran todos los datos de la tabla


Se reinicia llave primaria


A la hora de insertar un nuevo elemento podemos ver que el ID ha comenzado otra vez desde el número 1.



INVESTIGACION: Comparar Fechas SQL Server

Para el manejo y la comparación de fechas, SQL ofrece herramientas muy practicas, que cuando estamos usando una variable de tipo date debemos saber. A continuación veremos varios aspectos de las fechas en SQL:

  • Se ingresan en comillas simples
  • Se puede ingresa - , y . como separadores
  • La fecha actual del servidor se puede obtener con el comando getdate()
  • Los operadores relacionales se pueden utilizar en las fechas.
Por ejemplo se puede comprar fecha1 < fecha2, y de igual manera para los demás operadores relacionales.


  • Existe el comando YEAR(fecha) que retorna el año de una fecha
  • De igual forma existe el comando MONTH
  • Existe una función que retorna el numero de semana: DATEPART
Por ejemplo:
            MONTH(getdate()) obtiene el mes de la fecha actual
            DATEPART(week,V.Fecha)  obtiene el número de semana de la fecha


miércoles, 25 de septiembre de 2013

INVESTIGACION: Analisis Tipos de Conexion

Para poder conectarse a una base de datos, existen dos grandes modos de poder hacerlo, en cada uno presentamos sus ventajas como desventajas y un ejemplo de como se haria en C#.

Modo de Autentificación de Windows o Seguridad Integrada
Usa el protocolo de seguridad de Kerberos, proporciona la aplicación de directivas de contraseñas en cuanto a la validación de la complejidad de las contraseñas seguras, ofrece compatibilidad para el bloqueo de cuentas y admite la caducidad de las contraseñas. Usa una serie de mensajes cifrados para autenticar usuarios en SQL Server.
Ejemplo:
Data Source = ServidorSQL; Initial Catalog = BaseDatos; Integrated Security = True

Mode de Autentificacion de SQL Server – Conexión con credenciales explicitas
Ocupa un usuario y una contraseña, las cadenas de conexión de se pueden guardar ya sea en el archivo Web.config y en el catálogo COM+ Admin.
Ejemplo:
data source = ServidorSQL; initial catalog = BaseDatos; 
user id = Usuario; password = Contraseña

Desventajas:
Tener que proporcionar las credenciales de SQL Server cada vez que se conectan a la base de datos puede resultar molesto.
La autenticación de SQL Server no puede utilizar el protocolo de seguridad de Kerberos.
Los nombres y contraseñas de SQL Server se pasan a través de la red, lo que hace de este un método menos seguro.

Ventajas:
Permite a los usuarios conectarse desde dominios desconocidos o que no son de confianza
Permite que SQL Server admita entornos con sistemas operativos mixtos
Permite a SQL Server admitir las aplicaciones anteriores y las que proporcionan terceros y requieren la autenticación de SQL Server.

Autenticación de SQL Server por medio de SOAP : Es un modo de autenticación del pasado, que ya no es utilizado debido a las ineficiencias de seguridad que han sido encontradas

Referencias
http://msdn.microsoft.com/es-es/library/aa289855(v=vs.71).aspx
http://technet.microsoft.com/es-es/library/ms144284.aspx
http://msdn.microsoft.com/es-es/library/aa984237(v=vs.71).aspx

martes, 24 de septiembre de 2013

INVESTIGACION: Bloque Try / Catch SQL Server

Los errores de código en el SQL Server pueden tratarse de forma similar a lenguajes como C# o C++. Constan del bloque try y del bloque catch, donde el bloque catch controla la excepción que se puede producir en el bloque try. Deben de ir primero el bloque try, seguido inmediatamente del bloque catch.

El SQL Server presenta varios tipos de errores, que los mostramos a continuacin:
  • ERROR_NUMBER() devuelve el número de error.
  • ERROR_MESSAGE() devuelve el texto completo del mensaje de error. El texto incluye los valores suministrados para los parámetros sustituibles, como longitudes, nombres de objeto u horas.
  • ERROR_SEVERITY() devuelve la gravedad del error.
  • ERROR_STATE() devuelve el número de estado del error.
  • ERROR_LINE() devuelve el número de línea dentro de la rutina en que se produjo el error.
  • ERROR_PROCEDURE() devuelve el nombre del procedimiento almacenado o desencadenador en que se produjo el error.

    Algo que cabe mencionar son las dos situaciones donde el bloque try/catch no los puede controlar como lo son:
    - Errores de Compilación
    - Errores que se producen durante la recompilación de instrucciones

    Instrucción rollback : Revierte una transacción explícita o implícita hasta el inicio de la transacción o hasta un punto de retorno dentro de la transacción y de igual manera libera los recursos que mantiene la transacción. 

    Instrucción commit: Hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transacción sean parte permanente de la base de datos, libera los recursos mantenidos por la transacción

    En el siguiente ejemplo se muestra el machote que seguimos en cada uno de nuestros procedimientos, para hacer uso de un manejo efectivo de errores y excepciones.

    create procedure insertarHistoricoDocumento
    @Documento int,
    @Administrador int,
    @Descripcion varchar (50),
    @Contenido text
    as
    begin
    begin try
    begin transaction
    insert                               HistoricoModDocumento(FKDocumento,FKAdministrador,DescripcionCambio,Contenido)
    values(@Documento,@Administrador,@Descripcion,@Contenido)
    commit transaction
    end try
    begin catch
    select ERROR_NUMBER() as ErrorNumber;
    return -1;
    rollback transaction
    end catch
    end


    Para mas información se puede consultar los siguientes enlaces :
    http://technet.microsoft.com/es-es/library/ms179296(v=sql.105).aspx
    http://technet.microsoft.com/es-es/library/ms181299.aspx

    Cristian Araya
    David Vargas

    Horas Invertidas: 2 horas