martes, 13 de diciembre de 2016

Java Fundamentos: Ejercicio Final

Aplicación AppBasico Ejercicio Final


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



Ejercicio Final






Realizar los siguientes pasos:

  1. Descargar el archivo comprimido, que tiene las nuevas clases a utilizar,
  2. Descomprimir el archivo en una carpeta,
  3. Copiar los archivos de la carpeta nueva a AppBasico\src\appbasico, se deben reemplazar los archivos existentes.
  4. El elemento del menú Ejercicio 5 muestra la forma FormaE5.fxml, esto ya se encuentra programado.
  5. En la clase FormaE5Controller.java, programar lo siguiente:
  6. Si el usuario ingresa Distancia y Tiempo, entonces se calcula la Velocidad y se muestra el resultado en la etiqueta LblEstado.
  7. Si el usuario ingresa Velocidad y Tiempo, entonces se calcula la Distancia y se muestra el resultado en la etiqueta LblEstado.
  8. Si el usuario ingresa Velocidad y Distancia, entonces se calcula el Tiempo y se muestra el resultado en la etiqueta LblEstado.
  9. Las datos que puede ingresar el usuario son números double (es decir, decimal o reales).  Si el dato ingresado no es un número mostrar el mensaje en la etiqueta LblEstado.
  10. Si el usuario no ingresa dos de las tres casillas, entonces mostrar el mensaje para informar al usuario que no se pueden hacer el cálculo.

Al igual, que en los ejercicios anteriores, al finalizar el ejercicio:

  • Se debe imprimir a PDF, el archivo FormaE5Controller.java,
  • Enviar el documento PDF a la dirección de correo daniel.santizo71 at gmail.com
  • Con el Asunto: Talento Digital Ejercicio Final: (su nombre)


viernes, 9 de diciembre de 2016

Java Fundamentos: Ejercicios

Aplicación AppBasico


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


Ejercicio 1





En la clase FormaE1Controller.java, programar lo siguiente:

  • Al presionar el botón ValidarEntero, verificar que el dato ingresado en txtEntero sea un número entero y mostrar el mensaje correspondiente en la etiqueta LblEstado.

  • Al presionar el botón ValidarReal, verificar que el dato ingresado en txtReal sea un número decimal (es decir, con punto decimal) y mostrar el mensaje correspondiente en la etiqueta LblEstado.


Ejercicio 2




En la clase FormaE2Controller.java programar lo siguiente:
  • Al presionar el botón btnEvaluar,
  • Verificar que txtA, txtB y txtC, sean números enteros
  • Mostrar en la etiqueta LblEstado si los números son iguales, o el número mayor de los tres.


Ejercicio 3





En la clase FormaE3Controller.java programar lo siguiente:

  • Validar que txtNumero contenga un número entero positivo,
  • Al presionar el botón Generar Serie (btnGenerar), 
  • Asignar al txtSerie, la lista de números desde 1 hasta N (txtNumero)
  • A la par de cada número indicar si el número correspondiente es par o impar.
  • Utilizar un StringBuilder para almacenar los resultados temporales antes de asignarlos a txtSerie.
  • Utilizar un ciclo For para generar la serie de número.
  • Cualquier mensaje enviarlo a la etiqueta LblEstado.
Ejemplo, si ingresan 5
1 impar,  2 par,  3 impar,  4 par,  5 impar

Ejemplo si ingresan 4
1 impar,  2 par,  3 impar,  4 par



Ejercicio 4




En la clase FormaE4Controller.java programar lo siguiente:

  • Validar que txtNumero contenga un número entero positivo,
  • Al presionar el botón Evaluar (btnEvaluar), 
  • Utilizar un ciclo While para comprobar si los números del 2 al N-1 son divisores exactos del número N, donde N es el número ingresado en txtNumero.
  • Divisor Exacto, es aquel donde el residuo es igual a cero (0).
  • Mostrar el mensaje si el número es primo o no.
  • Cualquier mensaje enviarlo a la etiqueta LblEstado.


Enviar ejercicios por Correo


  • Al terminar los 4 ejercicios, colocar en los comentarios del inicio, de cada una de las clases, su nombre y dirección de correo.
  • Imprimir los 4 ejercicios.
  • Enviarlos por correo electrónico con el Asunto: Talento Digital 2: (su nombre)
  • A más tardar el día Martes 13/Diciembre.

miércoles, 7 de diciembre de 2016

Java Fundamentos 08: JDBC (Access) Parte 2



Forma Municipio FormaMunicipio.fxml y el controller

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


Código Fuente


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



Código Fuente 2


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





Código Fuente 3




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





Al finalizar la modificación del Código Fuente 3, realizar lo siguiente:


  1. Abrir el archivo FormaDepartamentoController.java
  2. Agregar al principio del documento, en comentarios: Nombre y Dirección de Correo Electrónico.
  3. Seleccionar el menú de File (Archivo),
  4. Seleccionar Print (Imprimir),
  5. Presionar el botón de Print, en la nueva ventana de diálogo.
  6. En el diálogo de Printer (Impresora) asegurarse de seleccionar Microsoft Print to PDF.
  7. Grabar el Documento en la carpeta personal.
  8. Abrir el archivo FormaMunicipioController.java y repetir el procedimiento.
  9. Enviar ambos archivos por correo electrónico a: daniel.santizo71 at  gmail.com
  10. Colocar en el Asunto del Correo: Talento Digital y su nombre.

Calling a JavaScript function from code behind






Calling a JavaScript function from code behind
Step 1 Add your Javascript code
<script type="text/javascript" language="javascript">
    function Func() {
        alert("hello!")
    }
</script>
Step 2 Add 1 Script Manager in your webForm and Add 1 button too
Step 3 Add this code in your button click event
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true);



http://stackoverflow.com/questions/5731224/calling-javascript-function-from-codebehind


martes, 6 de diciembre de 2016

Java Fundamentos 08: JDBC (Access)

Base de Datos Access y Librerías de Conexión


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



Aplicación AppRegion


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



Instrucciones


  • Descargar la base de datos y las librerías de conexión.
  • Desempacar o descomprimir el archivo en el disco C:\, verificar que se encuentran las rutas de acceso c:\dbAccess y c:\dbAccess\Lib.
  • Descargar la Aplicación y descomprimir el archivo.
  • Abrir el proyecto en NetBeans y Agregar las librerías correspondientes.










  • Agregar código para el botón de Agregar, Actualizar y Eliminar.






Referencias

UCanAccess
http://ucanaccess.sourceforge.net/site.html


JAVA: Conectar con una Base de Datos Access con JDBC
http://sandritascs.blogspot.com/2015/08/java-conectar-con-una-base-de-datos.html






Corrección de Mensaje

java.lang.UnsupportedOperationException: Cannot write indexes of this type due to unsupported collating sort order SortOrder[3082(0)] for text index (Db=Region.mdb;Table=Departamento;Index=1)












http://stackoverflow.com/questions/27893630/unsupported-collating-sort-order-error-updating-access-database-from-java


lunes, 5 de diciembre de 2016

Java Fundamentos 08: JDBC (Parte 5)




Aplicación a Descargar


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



  1. Desempacar o descomprimir los 4 archivos
  2. Copiar los 4 archivos a la carpeta AppNotas4\src\appnotas\
  3. Abrir el proyecto AppNotas4 en NetBeans.
  4. El laboratorio siguiente se realiza en FormaNivelEducativoController.java
  5. Agregar el código para el botón de Agregar, ya existe el método de validación ValidaIngreso() para las casillas de Nombre e Iniciales.
  6. Agregar el código para el botón de Eliminar, ya existe el método de validación ValidaCodigo() para la casilla del Código de Nivel Educativo.
  7. Agregar el código para el botón de Actualizar.





martes, 29 de noviembre de 2016

Java Fundamentos 08: JDBC (Parte 4)

Aplicación a Descargar


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





  1. Agregar la librería de SQLJDBC.jar
  2. Cambiar en la Clase Constantes.java por los valores correspondientes a su computadora
  3. Agregar el código para las Consultas
  4. Agregar código al método ValidaIngreso() para que retorne true si los datos de las casillas tienen valores aceptables, Nombre e Iniciales diferentes de vacío y CodNivelEducativo tiene un valor numérico.
  5. Agregar el código para realizar UPDATE sobre una fila, usando la condición del CodGrado = al valor de la casilla
  6. Agregar el código para realizar DELETE sobre una fila, usando la condición del CodGrado = al valor de la casilla

Código Fuente:





Script para Agregar dos Filas Adicionales a la tabla NivelEducativo



Para otorgar permisos al USER Profesor1 sobre la escritura de las tablas:


USE SistemaNotas;
GO

ALTER ROLE db_datawriter
     ADD MEMBER Profesor1;





Ejemplo de Diálogo de Advertencia:

@FXML
private void btnEliminarClick(ActionEvent event) {
   Alert Dialogo = new Alert(AlertType.CONFIRMATION, "Seguro Borrar?", 
                ButtonType.YES, ButtonType.NO);

   Optional<ButtonType> Respuesta = Dialogo.showAndWait();
   
    if (Respuesta.isPresent() && Respuesta.get() == ButtonType.YES) {
           //Invocar al método para DeleteGrado();
           
    }

}









lunes, 28 de noviembre de 2016

Java Fundamentos 08: JDBC (Referencias)

Usar tipos de datos básicos
https://msdn.microsoft.com/es-es/library/ms378878(v=sql.110).aspx


Usar instrucciones con el controlador JDBC
https://msdn.microsoft.com/es-es/library/ms378623(v=sql.110).aspx


Usar una instrucción SQL sin parámetros
https://msdn.microsoft.com/es-es/library/ms378451(v=sql.110).aspx


Usar una instrucción SQL con parámetros
https://msdn.microsoft.com/es-es/library/ms378138(v=sql.110).aspx


Usar instrucciones con procedimientos almacenados
https://msdn.microsoft.com/es-es/library/ms378046(v=sql.110).aspx


Administrar conjuntos de resultados con el controlador JDBC
https://msdn.microsoft.com/es-es/library/ms378737(v=sql.110).aspx


Referencia de la API del controlador JDBC
https://msdn.microsoft.com/es-es/library/ms378914(v=sql.110).aspx


Usar múltiples conjuntos de resultados
https://msdn.microsoft.com/es-ES/library/ms378758(v=sql.110).aspx


Using Prepared Statements

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

Java Fundamentos Referencias

Class Formatter

https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html


Formatting Numeric Print Output

https://docs.oracle.com/javase/tutorial/java/data/numberformat.html


Class TableView<S>

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TableView.html#itemsProperty


Class TableColumn<S,T>

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/TableColumn.html


Class PropertyValueFactory<S,T>

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/cell/PropertyValueFactory.html


Table View

http://docs.oracle.com/javafx/2/ui_controls/table-view.htm




Multiple FXML with Controllers, share object

http://stackoverflow.com/questions/12166786/multiple-fxml-with-controllers-share-object




Using JavaFX Properties and Binding

http://docs.oracle.com/javase/8/javafx/properties-binding-tutorial/binding.htm#JFXBD107


Using JavaFX Collections

http://docs.oracle.com/javase/8/javafx/collections-tutorial/collections.htm#JFXCL107


Best Practice: Enforce Model-View-Controller (MVC) with FXML

http://docs.oracle.com/javafx/2/best_practices/jfxpub-best_practices.htm



javafx.scene.control
Class Alert

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Alert.html



Java Fundamentos 08: JDBC (Parte 3)

Presentación


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


Script para Insertar filas en la tabla Grados


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


Aplicación de Notas


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


Recordar corregir:

  • La clase Constantes.java
  • Eliminar la Referencia a SQLJDBC42.jar y volver a agregarlo


Código Fuente


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




viernes, 25 de noviembre de 2016

Java Fundamentos 08: JDBC (Parte 2)


Base de Datos:

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



Cambiar Autorización:

USE SistemaNotas;
GO
ALTER AUTHORIZATION ON DATABASE::SistemaNotas TO sa;


Asignar el Login

USE SistemaNotas;
GO
ALTER USER Profesor1 WITH LOGIN = Profesor1;



Aplicación de Notas:

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



Código Fuente:

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
















martes, 22 de noviembre de 2016

Java Fundamentos 07: Colecciones y Clases

Presentación:

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




Laboratorio:



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



Botón de Ordenar

Para agregar la capacidad de ordenar a las clases propias, se implementa la interface Comparable:



Y luego se escribe el método de compareTo, dentro de la clase:







viernes, 18 de noviembre de 2016

Java Fundamentos 06: Colecciones

Presentación:


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




Laboratorio 6:

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




Parte 2



Código Final de FormaNumerosController.java (Código de Referencia del laboratorio anterior)

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







Laboratorio 7 (Nombres, AppRepaso3):


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


Luego de haber terminado con los botones iniciales del formulario, agregar lo siguiente:
  1. FormaNombresController.java : agregar un método (btnOrdenarClick) con el atributo @FXML, similar a los otros botones que existen en la clase.
  2. Desde el método programar Collections.sort(ListaNombres)
  3. Agregar en el método que invoque al método MostrarLista().
  4. FormaNombres.FXML :  agregar un botón con texto "Ordenar"
  5. El botón debe tener el fx:id btnOrdenar en la parte de code.
  6. Además asociar el On Action con el nombre del Método btnOrdenarClick



viernes, 11 de noviembre de 2016

Fundamentos de Bases de Datos: Módulo 02: Ejemplos de Procedimientos Almacenados

-- ===================================
-- Fecha: 2016/11/11
-- ===================================

USE CSDaniel;
GO
-- Información Tarjetas
SELECT *
      FROM Tarjeta;
-- Información de los clientes y tarjetas
SELECT *
      FROM vClienteTarjeta;
-- Información de las Tarjetas y sus Saldos
SELECT *
      FROM vTarjetaSaldo;


-- ===================================
-- paActualizarSaldo
-- ===================================

USE [CSDaniel]
GO

/****** Object:  StoredProcedure [dbo].[paActualizarSaldo]    Script Date: 11/11/2016 12:54:26 p. m. ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:        Daniel Santizo Saldaña
-- Create date: 2016-11-11
-- Description:   Actualizar el saldo de una tarjeta y la fecha
-- =============================================
CREATE PROCEDURE [dbo].[paActualizarSaldo]
      -- Add the parameters for the stored procedure here
      @CodTarjeta int = 0
AS
BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

    -- ACTUALIZAR EL SALDO de la Tarjeta @CodTarjeta
      DECLARE @Saldo Decimal;
      -- RECUPERA EL SALDO
      SELECT @Saldo = Saldo
            FROM vTarjetaSaldo
            WHERE CodTarjeta = @CodTarjeta;
      -- ACTUALIZA EN TARJETA
      UPDATE Tarjeta
            SET SaldoActual = @Saldo, FechaSaldo = GETDATE()
            WHERE CodTarjeta=@CodTarjeta;
END

GO




-- Actualizar el Saldo de la Tarjeta CodTarjeta = 1589
EXEC paActualizarSaldo 1589;
-- Consultar información
SELECT *
      FROM Tarjeta
      WHERE CodTarjeta=1589;

-- Información de Tarjetas y sus Saldos
SELECT T.CodCliente,
      v.CodTarjeta, v.CargoTotal, v.AbonoTotal,
      v.Saldo
      FROM vTarjetaSaldo v
      INNER JOIN Tarjeta T
      ON T.CodTarjeta = v.CodTarjeta
      ORDER BY T.CodCliente, v.CodTarjeta;

-- VISTA vClienteSaldo
SELECT *
      FROM vClienteSaldo
      ORDER BY CodCliente, CodTarjeta;

-- UPDATE / SELECT
SELECT T.CodCliente, T.CodTarjeta,
      T.FechaSaldo, T.SaldoActual,
      vCS.CodCliente, vCS.CodTarjeta,
      vCS.Saldo
      FROM Tarjeta T
      INNER JOIN vClienteSaldo vCS
            ON T.CodTarjeta = vCS.CodTarjeta
      WHERE T.CodCliente = 2;






-- ===================================
-- vClienteSaldo
-- ===================================

USE [CSDaniel]
GO

/****** Object:  View [dbo].[vClienteSaldo]    Script Date: 11/11/2016 12:52:57 p. m. ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW [dbo].[vClienteSaldo]
AS
SELECT dbo.Tarjeta.CodCliente, dbo.vTarjetaSaldo.CodTarjeta,    
      dbo.vTarjetaSaldo.CargoTotal, dbo.vTarjetaSaldo.AbonoTotal,
      dbo.vTarjetaSaldo.Saldo
      FROM dbo.Tarjeta
      INNER JOIN dbo.vTarjetaSaldo
      ON dbo.Tarjeta.CodTarjeta = dbo.vTarjetaSaldo.CodTarjeta
GO

GRANT SELECT ON [dbo].[vClienteSaldo] TO [ServicioCliente] AS [dbo]
GO



-- ===================================
-- paActualizarCliente
-- ===================================

USE [CSDaniel]
GO

/****** Object:  StoredProcedure [dbo].[paActualizarCliente]    Script Date: 11/11/2016 12:54:32 p. m. ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:        Daniel Santizo Saldaña
-- Create date: 2016-11-11
-- Description:   Actualizar los Saldos de las Tarjetas de un Cliente
-- =============================================
CREATE PROCEDURE [dbo].[paActualizarCliente]
      -- Add the parameters for the stored procedure here
      @CodCliente int = 0
AS
BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;

    -- Insert statements for procedure here
      UPDATE Tarjeta
            SET FechaSaldo = GETDATE(),
                  SaldoActual = vClienteSaldo.Saldo
            FROM vClienteSaldo
            WHERE Tarjeta.CodCliente = @CodCliente
            AND Tarjeta.CodTarjeta = vClienteSaldo.CodTarjeta;
END

GO







-- Clientes y Tarjetas
SELECT C.CodCliente, C.Apellido, C.Nombre,
      T.CodTarjeta, T.FechaSaldo, T.SaldoActual
      FROM Cliente C
      INNER JOIN Tarjeta T
      ON C.CodCliente = T.CodCliente;

-- Cliente = 1
EXEC paActualizarCliente 1;


-- Genera un script para ejecutar la actualización de saldos de todos
-- los clientes en la tabla.
SELECT 'EXEC paActualizarCliente ', CodCliente,
      ';'
      FROM Cliente




-- =============================================
-- SEGURIDAD
-- =============================================

USE [master]
GO
CREATE LOGIN [Servicio2]
      WITH PASSWORD=N'12345',
      DEFAULT_DATABASE=[CSDaniel],
      DEFAULT_LANGUAGE=[Español],
      CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
USE [CSDaniel]
GO
CREATE USER [Servicio2]
      FOR LOGIN [Servicio2]
GO
USE [CSDaniel]
GO
ALTER ROLE [ServicioCliente]
      ADD MEMBER [Servicio2]
GO