viernes, 30 de septiembre de 2016

Fundamentos de Bases de Datos: UPDATE e INSERT desde un Conjunto de Filas

Diagrama Entidad Relación:







/* Exists */
SELECT *
     FROM NotaCiclo
     INNER JOIN NotaFinal
     ON NotaCiclo.CodAlumno = NotaFinal.CodAlumno
     AND NotaCiclo.CodCurso = NotaCiclo.CodCurso;

/* NOT EXISTS */
     SELECT NotaCiclo.CodAlumno, NotaCiclo.CodCurso,
          NotaCiclo.Nota, *
     FROM NotaCiclo
     LEFT OUTER JOIN NotaFinal
     ON NotaCiclo.CodAlumno = NotaFinal.CodAlumno
     AND NotaCiclo.CodCurso = NotaCiclo.CodCurso
     WHERE NotaFinal.CodAlumno IS NULL
     AND NotaFinal.CodCurso IS NULL
     AND CodCiclo = 7;


Ejemplo Completo


DECLARE @Ciclo INT = 7

DECLARE @Fecha DATE;

SELECT @Fecha = FechaFin
     FROM Ciclo
     WHERE CodCiclo = @Ciclo;

/* UPDATE Existentes */
UPDATE NotaFinal
     SET NotaFinal = NotaCiclo.Nota,
     NotaFinal.Fecha = @Fecha
     FROM NotaFinal
     INNER JOIN NotaCiclo
     ON NotaFinal.CodAlumno = NotaCiclo.CodAlumno
     AND NotaFinal.CodCurso = NotaCiclo.CodCiclo
     WHERE NotaCiclo.CodCiclo = @Ciclo;  

/* INSERT Valores Nuevos */

INSERT INTO NotaFinal
     (CodAlumno, CodCurso, Fecha, NotaFinal)
SELECT NotaCiclo.CodAlumno, NotaCiclo.CodCurso,
          @Fecha, NotaCiclo.Nota
     FROM NotaCiclo
     LEFT OUTER JOIN NotaFinal
     ON NotaCiclo.CodAlumno = NotaFinal.CodAlumno
     AND NotaCiclo.CodCurso = NotaCiclo.CodCurso
     WHERE NotaFinal.CodAlumno IS NULL
     AND NotaFinal.CodCurso IS NULL
     AND CodCiclo = @Ciclo;




Programación en ASP.NET: Reporte Encabezado Detalle (Factura)

Video Tutorial Reporte Encabezado y Detalle (Factura)

https://youtu.be/SE9_ZzjsLqs







jueves, 22 de septiembre de 2016

Programación en HTML5, CSS3 y JavaScript: Módulo 08: Canvas (RGraph)

Demostración

https://drive.google.com/open?id=0B7Ct7K_LTJvSZGNORXl4THprZ0k



Referencias


2D/3D JavaScript charts - Free and Open Source

http://www.rgraph.net/

Starting with RGraph

http://www.rgraph.net/docs/starting-with-rgraph.html

Meter and Gauge charts

http://www.rgraph.net/examples/meters-and-gauge-charts.html


Canvas

http://www.w3schools.com/graphics/canvas_intro.asp

SVG

http://www.w3schools.com/graphics/svg_intro.asp


Programación en HTML5, CSS3 y JavaScript: Módulo 07: Web API


Tutorial

https://drive.google.com/open?id=0B7Ct7K_LTJvSOFczV0tWSHBuUzA

Archivos del Tutorial

https://drive.google.com/open?id=0B7Ct7K_LTJvSLXk4ZkZ3bjZjUnc



Referencias

Getting Started with ASP.NET Web API 2 (C#)


http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api


Using Web API 2 with Entity Framework 6


http://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-1



Routing in ASP.NET Web API


http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api


Routing and Action Selection in ASP.NET Web API


http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection


martes, 20 de septiembre de 2016

Programación en HTML5, CSS3 y JavaScript: Módulo 06: Bootstrap

Presentación


https://drive.google.com/open?id=0B7Ct7K_LTJvSaWRoVjFES0xFZjQ


Ejercicio

http://www.w3schools.com/bootstrap/bootstrap_theme_company.asp


Referencias


http://www.oneskyapp.com/es/docs/bootstrap/css

https://bootswatch.com/

http://getbootstrap.com/css/

http://www.w3schools.com/bootstrap/default.asp

http://www.tutorialspoint.com/bootstrap/bootstrap_grid_system.htm



Ejemplo:

<!DOCTYPE html>
<html>
<head>
    <title></title>
       <meta charset="utf-8" />
    <!-- Librería jQuery -->
    <script src="Scripts/jquery-3.1.0.js"></script>
    <!-- Librería de Bootstrap -->
    <script src="Scripts/bootstrap.js"></script>
    <!-- Estilo de Bootstrap -->
    <link href="Content/bootstrap.css" rel="stylesheet" />
    <script src="Scripts/ValidaProducto.js"></script>
</head>
<body>
    <div class="container">       
        <div class="row"> <!-- Fila 1 -->
            <div class="col-lg-8"> <!-- Columna 1 -->
                <form id="frm" name="frm" class="form-inline"
                      method="get" action="Consulta.aspx"
                      onsubmit="return fValidaDatos();">
                    <fieldset>
                        <legend>Datos</legend>
                        <div id="divCod" name="divCod" class="form-group">
                            <label for="CodProd" class="control-label">
                                Código Producto:
                                <input type="text" maxlength="5" class="form-control"
                                       id="CodProd" name="CodProd" />
                            </label>
                        </div>
                        <div id="divProd" name="divProd" class="form-group">
                            <label for="NomProd" class="control-label">
                                Nombre Producto:
                                <input type="text" maxlength="50" class="form-control"
                                       id="NomProd" name="NomProd" />
                            </label>
                        </div>
                        <div class="form-group">
                            <input type="submit" id="Ingreso" name="Ingreso"
                                   class="btn btn-primary" />
                        </div>
                    </fieldset>

                </form>
            </div>
            <div class="col-lg-4"> <!-- Columna 2 -->

            </div>
        </div>

       

    </div>
</body>
</html>



ValidaProducto.js


function fValidaDatos() {
    var bRetorno = true;
    var PatronNumero = "[0-9]";
    var PatronLetras = "[a-zA-Z\\s]";
    var Indice = 0;
    try {
        //Encontrar elemento
        var iCP = document.getElementById("CodProd").value;
        //Validar el Patrón de Número
        Indice = String(iCP).search(PatronLetras);
        if (Indice > -1) {
            //El patrón existe en la cadena de caracteres
            $("#divCod").addClass("has-error");
            bRetorno = false;
        }
        else {
            $("#divCod").removeClass("has-error");
            Indice = String($("#NomProd").val()).search(PatronNumero);
            if (Indice > -1) {
                $("#divProd").addClass("has-error");
                bRetorno = false;
            }
        }
    }
    catch (e) {
        console.log(e);
    }
    return bRetorno;
}