Showing posts with label Paso-a-Paso. Show all posts
Showing posts with label Paso-a-Paso. Show all posts

Wednesday, February 13, 2019

[i18n] Implementar ngx-translate en un proyecto Angular 7

Hola! Hoy te presento una forma de implementar i18n en tu proyecto Angular y esta forma es utilizando la libreria de terceros llamada *ngx-translate*

Es muy sencillo, te los mostraré en 5 pasos y asumiré que ya tienes creado tu proyecto Angular:

PASO 1: Instalar la librería en tu proyecto:


npm install @ngx-translate/core @ngx-translate/http-loader rxjs --save


PASO 2: Importar ngx-translate en app.module.ts
Tu app.module.ts quedaría así:

PASO 3: Inyectar TranslateService en app.component.ts
Tu app.component.ts quedaría así


Nota que le agregué una función que hace el switch de idioma. Podrías Llamar a esta función desde un botoncito o desde otro control.

PASO 4: Crear los archivos JSON por cada idioma.
Recomendación: podrías ubicar estos archivos en la siguiente ruta: assets/i18n/en.json

Un ejemplo:


PASO 5: Editar los templates (HTML) y agregar los translate
Y como último paso, usamos los translations y tenemos dos alternativas: usando pipes o directivas. Me gusta más los pipes. Quedaría así:


Y voilà! Eso es todo.

Hay algunas herramientas que podrían serte de ayuda en el sitio oficial: ngx-translate.com

Friday, October 12, 2012

SQL SERVER 2008: volver Una columna A identity

Recuerdo que en SQL Server 2005 era fácil volver una columna a identity. Solo tenías que hacer clic derecho sobre la columna en el Management Studio, Modificar/Modify y en la ventanita Collumn Properties bajo la propiedad Identity Specification: Yes, Identity Seed: el último ID.

Pero con el SQL SERVER 2008 no se puede. Los pasos para hacerlo serían:

1. Te creas una tabla auxiliar de la que quieres volver identity.

create table Boveda_Auxiliar(
 Cod_Boveda int primary key identity(1,1),
 Cod_Sucursal smallint,
 Descripcion varchar(50),
 Cod_Cobertura int,
 sLastUpdate_id varchar(16),
 dtLastUpdate_dt datetime,
 iConcurrency_id int,
 FechaCreacion datetime,
 Activo bit
)

2. Ponemos el Identity Insert en on


SET IDENTITY_INSERT Boveda_Auxiliar ON

3. Llenamos la tabla auxiliar con los datos insertados en la tabla original.

insert into Boveda_Auxiliar (Cod_Boveda, Cod_Sucursal,Descripcion, Cod_Cobertura,sLastUpdate_id, dtLastUpdate_dt, iConcurrency_id, FechaCreacion, Activo  ) 
select Cod_Boveda, Cod_Sucursal,Descripcion, Cod_Cobertura,sLastUpdate_id, dtLastUpdate_dt, iConcurrency_id, FechaCreacion, Activo from Boveda

5. Ponemos el Identity Insert en off

SET IDENTITY_INSERT Boveda_Auxiliar OFF

6. Eliminamos la tabla Original

drop table Boveda

7. Renombramos la tabla auxiliar con el nombre de la tabla original.

sp_rename 'Boveda_Auxiliar','Boveda'

8. Llevamos la semilla del Identity al último ID

DBCC CHECKIDENT('Boveda', RESEED, select max(Cod_Boveda) from boveda)

Fácil, no? Sí, fácil pero tedioso. No tengo idea por qué no se puede hacer este proceso como en el caso del Sql Server 2005.

HaPPy Coding! =)

Monday, October 8, 2012

Cómo descargar videos en flash .swf


Sin preámbulos ni nada, a continuación una forma fácil para que podás bajar a tu disco duro un vídeo .swf

Para empezar, debés tener el browser o navegador FireFox.

Luego, estando en la página donde se encuentra el video, dale clic derecho (no sobre el video) y selecciona la opción "Ver información de la página"

A continuación, se te desplegará una ventanita con las pestañas "General", "Medios", "Permisos" y "Seguridad". Elije "Medios" y busca el que tenga la extensión ".swf", lo seleccionas, copias y pegas en la barra de navegación de tu navegador (valga la redundancia). 

Una vez copiado el link completo, le das el famoso "Guardar como" y listo! Ya lo tienes ;)

Thursday, April 12, 2012

Cómo implementar una base De datos: 6to paso

Y llegó la hora de consultar los datos de las tablas de nuestra base de datos. Este paso es para satisfacer los reportes requeridos por los usuarios. Nuestro interés no solo es almacenar y almacenar datos sino también consultarlos, extraerlos, estudiarlos, etc.

Como sexto paso, utilizaremos la sentencia de consultas del SQL: SELECT.

El SELECT puede ser tan sencillo como complejo. Todo dependerá de los requerimientos, de lo que queremos.

Una regla general para saber si la consulta será una consulta anidada es cuando en el enunciado encontramos dos preguntas. Mi clásico ejemplo es: Quién es el alumno que obtuvo la mejor nota del semestre I/2012? Aquí primero debemos encontrar cuál es la mejor nota del semestre y luego saber qué alumno obtuvo esa nota.

La sintaxis de la instrucción SELECT es:

SELECT [DISTINCT] nombre de las columnas
FROM nombre de la tabla(s)
[WHERE condición de búsqueda]
[GROUP BY nombre de las columnas de agrupamiento]
[HAVING condición de búsqueda para el Group By]
[ORDER BY nombre las columnas de ordenamiento [ASC | DESC]]

Un SELECT mínimo debe ser así:

SELECT * FROM tabla

TIPS

Si hay un GROUP BY, es porque estamos utilizando funciones agregadas en el SELECT.

Puede existir un función agregada en el SELECT sin usar GROUP BY. Pero no puede existir un GROUP BY si existir una función agregada en el SELECT.

En el GROUP BY deben ir todas las columnas que van en el SELECT.

No puede existir un HAVING sin existir un GROUP BY. Puede existir un GROUP BY sin que haya un HAVING.

Existen tres tipos de consultas anidadas. Los SELECTs que van en el SELECT principal, los SELECTs que van en el FROM y los SELECTs que van en el WHERE.

Bueno, esta publicación no pretende enseñarte SQL. En la web hay n manuales para aprender cómo hacer consultas complejas y optimizadas.

Wednesday, April 11, 2012

Cómo implementar una base De datos: 5to paso

Habrán filas en nuestras tablas que ya no se requieran más. Como quinto paso, emplearemos la sentencia DELETE.

1. Delete Simple

Sin especificar una condición, eliminaremos todas las filas de una tabla sin eliminar la tabla

DELETE FROM persona

2. Delete con Condición

Podemos eliminar las filas de una tabla sólo aquellas que cumplan una condición

DELETE FROM presona WHERE fec_nac > '1985/01/01'

Como en todo, también podemos agregarle una consulta anidada el WHERE. Todo es cuestión de creatividad y basado en conocimiento. Nuestro delete puede convertir de algo sencillo a algo muy complejo.

Tuesday, April 10, 2012

Cómo implementar una base De datos: 4to paso

Después de haber hechos los INSERT INTO, es probable que los datos cambien con el tiempo, por tanto, se recurre a la sentencia UPDATE. Esta sentencia llega a ser nuestro cuarto paso.

La sentencia UPDATE puede ser desde lo más sencillo hasta lo más complejo.

1. Update Simple

UPDATE persona
SET fec_nac= '1985/08/20'

En un update simple, actualizamos TODOS los registros de la tabla

2. Update con Condición

UPDATE persona
SET fec_nac= '1985/02/23'
WHERE id=1

En un update con condición, actualizamos únicamente los registros que cumplen esa condición. En el WHERE podemos agregar una condición simple o compleja a través de consultas anidadas. (un SELECT)

3. Update con CASE

Podemos actualizar una tabla de base de datos de acuerdo a distintos casos. Por ejemplo, queremos ponerle un descuento a un producto pero esto lo queremos hacer de acuerdo al precio del producto.

UPDATE producto
SET descuento= CASE
WHEN (precio < 100) THEN precio*0.1
WHEN (precio <=100 AND precio <500) THEN precio*0.2
ELSE descuento=precio*0.3 END

Para utilizar la cláusula CASE, hay dos maneras de hacerlo:

CASE
 WHEN condición THEN resultado_1
 ELSE resultado_2
 END
 CASE la expresión
 WHEN la condición THEN resultado_1
 ELSE resultado_2
 END

La cláusula ELSE se puede omitir pero el resultado será NULL.

Monday, April 9, 2012

Cómo implementar una base De datos: 3er paso

Una vez creada la base de datos, las tablas, es hora de poblarla. Tercer paso: INSERT INTO.

A la hora de realizar un INSERT INTO podemos hacerlos de 3 maneras.

Considérese la siguiente tabla para los ejemplos:

CREATE TABLE persona(
 id int identity(1,1) primary key,
 nombre varchar(20) not null,
 ap_paterno varchar(20) not null,
 ap_materno varchar(20) null,
 fec_nac datetime null,
 direccion varchar(30) not null
)

1. Sin especificar las columnas a insertar (por defecto, todas).

INSERT INTO persona VALUES ('lizzy', 'mendivil', null, null, 'california st #159')

Cuando no especificamos las columnas, éstas deben coincidir con el tipo de datos y la cantidad de columnas que tiene nuestra tabla. Resulta en desventaja ya que si existen valores nulos posibles, éstos debemos registrarlo también llenándolo con "null" (tal como se muestra en el ejemplo) y además si nos equivocamos y no hacemos coincidir con el tipo de datos, la ejecución de la sentencia resultará en error.

Otra desventaja es que dejamos que el compilador trabaje más analizando que los valores y las columnas correspondan.

2. Especificando las columnas a insertar.

INSERT INTO persona (nombre, ap_paterno, direccion) VALUES ('benjamin', 'villarroel', 'florida st #748')

Nótese que después de escribir el nombre de la tabla, entre paréntesis espcificamos las columnas que vamos a insertar con los valores.

3. A partir de un SELECT.

INSERT INTO persona (nombre, ap_paterno, direccion) SELECT nombre, ap_paterno, direccion FROM cliente

Solo debemos asegurarnos que el tipo de datos de la tabla de la cual queremos extraer los datos coincida con el tipo de datos de las columnas de la tabla a la cual queremos insertar los valores. El tipo de datos y el número de columnas.

Nótese que se reemplaza la palabra clave VALUES con la instrucción SELECT.

Nota.- Cuando realizamos un INSERT a una tabla la cual contiene referencia a otra (FOREIGN KEY), debemos asegurarnos que el valor de esa columna PRIMERO exista en la tabla a la cual pertenece, esto es la Integridad de Datos.

Friday, April 6, 2012

Cómo implementar una base De datos: 2do paso

Como segundo paso, viene la creación de las tablas de la base de datos: "CREATE TABLE".

Es importante resaltar que la creación de las tablas se debe hacer en orden. Más que todo en las relaciones 1 a N. Por ejemplo, 1 cliente realiza N ventas. No podemos crear primero la tabla "ventas" sin haber creado antes la de "cliente" Por tanto, las tablas que no tienen llave foránea deben crearse primero.

La sentencia CREATE TABLE con todos sus atributos sería como sigue:

CREATE TABLE nombre_table
(
 campo1 tipo_dato [NULL/NOT NULL] | [CHECK (expresion_logica)] | [DEFAULT expresion_constante] | [aqui podemos agregar si va a ser primary o foreign key],
 ...
 PRIMARY KEY (campo_llave_pk),
 FOREIGN KEY (campo_llave_fk) REFERENCES nombre_tabla2 (campo_llave_pk_tabla2)
)
Ejemplo. Creación de las tablas para una base de datos de Ventas (sencilla para fines académicos)

CREATE TABLE cliente(
 id int identity(1,1) primary key, --cuando es llave primaria, automáticamente es NOT NULL
 nombre varchar(20) not null,
 ap_pat varchar(20) not null,
 ap_mat varchar(20) null, --si no se especifica que sea NULL, el DBMS lo pone por defecto.
 direccion varchar(30) null,
 sexo char(1) CHECK (sexo in('M','F')),
 limite_credito decimal(10,2) not null
)

CREATE TABLE vendedor(
 id int identity(1,1) primary key,
 nombre varchar(20) not null,
 ap_pat varchar(20) not null,
 ap_mat varchar(20) null, 
 direccion varchar(30) null,
 sexo char(1) CHECK (sexo in('M','F'))
)

CREATE TABLE producto(
 id int identity(1,1) primary key,
 descripcion varchar(50) not null,
 precio decimal(10,2) not null,
 stock int not null
)

CREATE TABLE ventas(
 id int identity(1,1) primary key,
 fecha datetime not null,
 descuento decimal(10,2) default 0,
 id_cliente int foreign key references cliente(id),
 id_vendedor int foreign key references vendedor(id)
)

CREATE TABLE ventas_detalle(
 id int identity(1,1) primary key,
 cantidad int check (cantidad >0),
 id_producto int foreign key references producto(id),
 id_venta int foreign key references ventas(id)
)

Una vez creadas las tablas, podría darse el caso de que querramos eliminar alguna o modificarla.

Para eliminar una tabla: DROP TABLE

Practicamente, podemos darle un DROP a todo lo que le hayamos dado un CREATE (table, trigger, view, etc.)

Ejemplo:

DROP TABLE venta_detalle

Para modificar una tabla: ALTER TABLE

Podemos agregar una nueva columna a una tabla, eliminar una columna existente de la tabla o modificar una collumna existente de tabla.

1. Añadir una definición de la columna de una tabla. Puede crearse con valores nulos o valores.

ALTER TABLE nombre_tabla ADD nombre_columna_nueva tipo_dato [NULL] | [CONSTRAINT nombre_nueva_restriccion CHECK/DEFAULT]

2. Eliminar una columna de la tabla. Pero antes de su eliminación deben ser eliminados por ALTER TABLE todas las restricciones que estén definidas sobre esta solumna.

ALTER TABLE nombre_table DROP COLUMN nombre_columna

3. Eliminar un constraint.

ALTER TABLE nombre_table DROP CONSTRAINT nombre_del_constraint

4. Crear una llave primaria. En el caso de que esta tabla ya contenga datos, las columnas que escojamos para la llave primaria deben ser de valor únicos por cada fila.

ALTER TABLE nombre_table ADD PRIMARY KEY (key1, key2...)

5. Crear una llave foránea. La columna a definir como llave foránea debe contener previamente valores que corresponden a la llave primaria de la otra tabla.

ALTER TABLE nombre_table ADD FOREIGN KEY (key)

6. Habilitar o inhabilitar los trigger en una tabla.

ALTER TABLE nombre_table ENABLE TRIGGER nombre_trigger

ALTER TABLE nombre_table DISABLE TRIGGER nombre_trigger

Thursday, April 5, 2012

Cómo implementar una base De datos: 1er paso

A lo largo del ciclo de la implementación de una base de datos relacional, entran en juego 3 tipos de lenguajes los cuales el SQL (Structure Query Language - Lenguaje de consulta estructurado) los clasifica como sigue a continuación:

** Lenguaje de Definición de Datos (DDL, Data Definition Language)
** Lenguaje de Manipulación de Datos (DML, Data Management Language)
** Lenguaje de Control de Datos (DCL, Data Control Language)

Para llevar a cabo el primer paso a la hora de implementar una base de datos, utilizaremos lo que es el DDL.

DDL
Grupo de sentencias del SQL que soportar la definición y declaración de los objetos de la base de datos tales como la base de datos misma, las tablas, las vistas, los índices, los procedimientos almacenados, las funciones, los triggers, etc.

Los comandos son:

CREATE
ALTER
DROP

Ok. El primer paso entonces es definir en el disco duro el área física que contendrá las tablas dela base de datos.

El siguiente pedazo de código se encargará de ello:

CREATE DATABASE ventas ON PRIMARY(
 NAME = ventas_data, --Nombre de la BD
 FILENAME='c:\ventas.mdf', --Dirección donde se crea la BD
 SIZE=5MB, --Tamaño de la BD
 MAXSIZE=10MB, --Tamaño máximo de la BD
 FILEGROWTH=1MB --Crecimiento de la BD
)
LOG ON(
 NAME=ventas_log,
 FILENAME='c:\ventas.ldf',
 SIZE=5MB,
 MAXSIZE=10MB,
 FILEGROWTH=1MB
)

La primer sentencia crea un archivo principal de extensión mdf de tamaño inicial de 5 MB, cuando este espacio se agote, 5MB se expandirá en 1MB más para tener espacio libre y poder meter más registros o tablas, y cuando nuevamente se agote, se expandirá nuevamente en 1 MB y así sucesivamente cuando haya alcanzado el máximo de 10MB.

Y lo mismo ocurrirá con el archivo de registro de transacciones (.ldf)

Cuando nosotros no lo especificamos manualmente, el DBMS lo hace. Por ejemplo, al ejecutar solo la sentencia CREATE DATABASE ventas, el DBMS (en este caso, SQL SERVER) hizo lo siguiente: (selecciona la base de datos que acabas de crear, clic derecho y propiedades, te levantará la siguiente ventana)