martes, 19 de abril de 2011

Crear un desplegable en excel en 3 pasos

Para realizar una lista desplegable o un combo en excel hay que seguir estos pasos:

1.- Creamos una hoja de datos, donde tendrás las variables que utilices en tu excel y para este caso en particular las opciones de tu desplegable, las puedes poner horizontal o verticalmente, pero ponlas seguidas, que te veo venir. Si quieres que tenga un campo vacío tenlo en cuenta a la hora de escribir las opciones, el primer campo debería ser el blanco.

2.- Dale a Insertar > Nombre > Definir y escribe el nombre de tu combo, por ejemplo Estado. Mas abajo pone Se refiere, pon el cursor ahí, borra si tienes algo y seguidamente selecciona los campo que quieras que aparezcan en tu lista.

3.- Ahora vamos a sacar la lista en el / los campo/s que quieras, seleccionalos y vete a Datos > Validación > Permitir > Lista y donde pone Origen debes ingresar el nombre de tu lista, en mi ejemplo =Estado (no se te olivide el = ).

Ale, pues ya esta!!! :)

martes, 12 de abril de 2011

CodeIgniter, manipular Base de Datos con Active Record: Modificando Datos

Insertando Datos:

$this->db->insert();

Genera una cadena de inserción basado en los datos que se suministren, y ejectua la consulta devolviendo true o false en el caso de haber error. Se puede pasar una arreglo o un objeto a la función:

$datos = array (
'nombre' => 'desprogramate'
, 'titulo' => $titulo
, 'fecha' => $fec
);

$this->db->insert('mitabla', $datos);

> INSERT INTO mitabla (nombre, titulo, fecha) VALUES ('desprogramate', 'titulo', 'fec');

También se puede utilizar la funcion $this->db->set(); que permite establecer valores para insertar y para actualizar:

$this->db->set('nombre', 'desprogramate');
$this->db->set('titulo', $titulo);
$this->db->set('fecha', $fec);
$this->db->insert('mitabla');

> INSERT INTO mitabla (nombre, titulo, fecha) VALUES ('desprogramate', 'titulo', 'fec');

Es exactamente igual que la sentencia anterior, pero la instrucción $this->db->set(); tiene un tercer parametro en el cual le podemos indicar si queremos que escapee o no. Por defecto esta a TRUE.

$this->db->set('campo', 'campo+1', FALSE);
$this->db->insert('mitabla');

> INSERT INTO mitabla (campo) VALUES (campo+1)

$this->db->set('campo', 'campo+1');
$this->db->insert('mitabla');

> INSERT INTO mitabla (campo) VALUES ('campo+1')

Actualizando Datos:

La instrucción $this->db->update(); actualiza datos pesándole un arreglo o un objeto:

$datos = array(
'titulo' => $titulo,
'nombre' => $nombre,
'fecha' => $fec
);

$this->db->where('id', $id);
$this->db->update('mitabla', $datos);

> UPDATE mitabla SET
titulo = 'titulo'
, nombre = 'nombre'
, fecha = 'fec'
WHERE id = $id

La función $this->db->update() admite un tercer parámetro que hace a su vez de función where, ej:

$datos = array(
'titulo' => $titulo,
'nombre' => $nombre,
'fecha' => $fec
);

$donde = array ( 'id' => $id );

$this->db->update('mitabla', $datos, $donde);

La instrucción resultante seria la misma del ejemplo anterior.

En la actualización de datos se puede utilizar también la función $this->db->set().


Borrando Datos:

La función $this->db->delete(); genera una cadena de eliminación SQL y ejecuta la consulta.

$this->db->delete('mitabla', array('id' => $id));

> DELETE FROM mitabla
WHERE id = $id

También se puede utilizar la función $this->db->where('id', $id)

$this->db->where('id', $id);
$this->db->delete('mitabla');

La instrucción resultante seria la misma del ejemplo anterior.

Otras funciones para el borrado:

$this->db->empty_table();
$this->db->truncate();

CodeIgniter, manipular Base de Datos con Active Record: Consulta de Datos

CodeIgniter trae una versión modificada del Patrón de Base de Datos Active Record, una de las ventajas que tiene utilizar este sistema a parte de una sintaxis mas abreviada, es que es independiente de la base de datos que utilices, asi, si cambias de BBDD no tendras que tocar el código. Pero también escapea automáticamente los valores que les pases.

Lo primero es verificar que en el archivo de configuración de la BBDD en codeIgniter, application/config/database.php, la variable $active_record = TRUE debe estar a TRUE, si no se va a utilizar la clase Active Record es recomendable desactivar esta clase dandole a la variable mencionada el valor de FALSE.


Instrucciones más usadas:

$this->db->get();

Ejecuta la consulta de selección y devuelve el resultado. Se suele combinar con otros comandos, por si sola es la select más sencilla que podemos hacer:

$consulta = $this->db->get('mitabla');

//SELECT * FROM mitabla

Si a la anterior consulta, queremos especificar los datos a seleccionar y filtrar añadiríamos estas lineas:

$this->db->select('titulo, descripcion');
$this->db->from('mitabla');
$this->db->where('nombre', $nombre);
$this->db->where('fecha <', $fec);
$this->db->order_by("titulo", "desc");
$consulta = $this->db->get();

// SELECT titulo, descripcion FROM mitabla WHERE nombre = 'nombre' AND fecha < 'fec'

El AND lo añade directamente la sentencia $this->db->where y si no ponemos ningún signo nos añade directamente el =, sino el que especifiquemos (fijarse en las dos sentencias where).

También se puede hacer mediante un arreglo asociativo:

$datos = array ('nombre' => $nombre, 'fecha <' => $fec, 'titulo !=' => $titulo);
$this->db->where($datos);

//WHERE nombre = 'nombre' AND fecha < 'fec' AND titulo != 'titulo'



Otras instrucciones:

$this->db->get_where();
$this->db->select_max();
$this->db->select_min();
$this->db->select_avg();
$this->db->select_sum();
$this->db->join();
$this->db->or_where();
$this->db->where_in();
$this->db->or_where_in();
$this->db->where_not_in();
$this->db->or_where_not_in();
$this->db->like();
$this->db->or_like();
$this->db->not_like();
$this->db->or_not_like();
$this->db->group_by();
$this->db->distinct();
$this->db->having();
$this->db->or_having();
$this->db->limit();
$this->db->count_all_results();
$this->db->count_all();

domingo, 22 de agosto de 2010

Activar Windows Update en Windows 7

También vale para Windows Vista.
 
Bueno la ruta escondida es la siguiente:
 
Panel de control\Sistema y seguridad\Windows Update\Cambiar configuración
 
La puedes copiar directamente en el explorador de Windows o puedes llegar a ella a través de los siguientes pasos:
 
Panel de Control > Sistema de Seguridad > Windows Update > Activar o desactivar la actualización automática
 
En la imagen esta la configuración que a mi me gusta:
 
 
Te pregunta dos veces si quieres descargar (1) e instalar (2) las actualizaciones, yo prefiero echarle un vistazo antes de instalar cualquier programa deWindoüs pero siendo Windows cada semana tendremos parches que nos arreglan los bug del SO.
 
Bueno despues de esto, y darle al aceptar vamos a buscar actualizaciones , le damos a "Buscar Actualizaciones" (si, en el mismo sitio de antes -> Panel de Control -> Seguridad y Sistema -> Windows Update, :P )
 
Le damos a Buscar actualizaciones y en un rato te dice cuantas decenas tienes Importantes y cuantas tienes opcionales, ein?? bueno si le das al link de Importantes puedes ver las que estan marcadas para descargarse e intalarse, la que te verifica si la copia de Windows es original (KB971033) sale desmarcada por defecto, curioso.
 
Marcas la que quieras, un 5% de personas marcaran la de verificar Windows y el 4 % serán empresas .... ;P....
 
Bueno y entramos en el link de opcionales, a mi aqui me salen alguna importante de la tarjeta grafica y del sonido y luego chorras de idiomas de Windows ... en mi caso marco todas las de controladores .... y le damos al boton de Instalar actualizaciones, cuando las descarge con la configuración de arriba, volvera a preguntarnos si deseamos Instalar las actualizaciones descargardas, si quereis volver a echar un vistazo pues se da, si no te acuerdas de lo era .... si no le das directamente y ya esta.
 
Ale ya lo he dicho ..... ;P
 
 

viernes, 9 de julio de 2010

Oracle Tablas del Sistema (parte II / II)

Como podéis observar todas las opciones, configuraciones de oracle están en tablas así que para cambiar alguna configuración nos vale con modificar los registros.

/*
Database compatible parameter set via init.ora
*/
select *
from DATABASE_COMPATIBLE_LEVEL

/*
All database links in the database
*/ 
select *
from DBA_DB_LINKS
 
/*
 Current errors on all stored objects in the database
*/ 
select *
from DBA_ERRORS

/*
All objects in the database
*/
select *
from DBA_OBJECTS

/*
All Roles which exist in the database
*/ 
select *
from DBA_ROLES
 
/*
 Roles granted to users and roles
*/ 
select *
from DBA_ROLE_PRIVS

/*
Source of all stored objects in the database
*/
select *
from DBA_SOURCE
 
/*
Description of all tablespaces
*/
select *
from DBA_TABLESPACES

/*
 All grants on objects in the database
*/ 
select *
from DBA_TAB_PRIVS

/*
All triggers in the database
*/
select *
from DBA_TRIGGERS

/*
Tablespace quotas for all users
*/ 
select *
from DBA_TS_QUOTAS
 
/*
Information about all users of the database
*/
select *
from DBA_USERS
 
/*
Description of all views in the database
*/
select *
from DBA_VIEWS
 
/*
Description of data dictionary tables and views
*/ 
select *
from DICTIONARY

/*
Description of columns in data dictionary tables and views
*/ 
select *
from DICT_COLUMNS 

/*
 global database name
*/
select *
from GLOBAL_NAME

/*
Permanent NLS parameters of the database
*/
select *
from NLS_DATABASE_PARAMETERS

/*
NLS parameters of the instance
*/ 
select *
from NLS_INSTANCE_PARAMETERS 

/*
 NLS parameters of the user session
*/
select *
from NLS_SESSION_PARAMETERS

/*
 version and status information for component products
*/
select *
from PRODUCT_COMPONENT_VERSION

/*
 Table privileges granted to roles
*/
select *
from ROLE_TAB_PRIVS

/*
 Privileges which the user currently has set
*/
select *
from SESSION_PRIVS

/*
 Roles which the user currently has enabled.
*/
select *
from SESSION_ROLES

/*
 Description table for privilege type codes. Maps privilege type numbers to type names
*/
select *
from SYSTEM_PRIVILEGE_MAP

/*
 Grants on objects for which the user is the grantor, grantee, owner, or an enabled role or PUBLIC is the grantee
*/
select *
from TABLE_PRIVILEGES

/*
 Description table for privilege (auditing option) type codes. Maps privilege
*/
select *
from TABLE_PRIVILEGE_MAP

miércoles, 16 de junio de 2010

Oracle Tablas del Sistema (parte I / II)

Algunas tablas del sistema de Oracle utiles.

/*
ALL_ARGUMENTS Arguments in object accessible to the user
argumentos a objeto accesible para el usuario
*/
select *
from ALL_ARGUMENTS

/*
ALL_CATALOG All tables, views, synonyms, sequences accessible to the user
Tablas, vistas, sinonimos y secuencias accesibles por el usuario
*/
select *
from ALL_CATALOG 

/*
ALL_COL_COMMENTS Comments on columns of accessible tables and views
Comentarios en columnas accesibles por el usuario 
*/
select *
from ALL_COL_COMMENTS 

/*
ALL_CONSTRAINTS Constraint definitions on accessible tables
Restricciones definidas 
*/
select *
from ALL_CONSTRAINTS

/*
ALL_CONS_COLUMNS Information about accessible columns in constraint definitions
*/
select *
from ALL_CONS_COLUMNS

/*
ALL_DB_LINKS Database links accessible to the user
Links accesibles a BBDD 
*/
select *
from ALL_DB_LINKS 

/*
ALL_ERRORS Current errors on stored objects that user is allowed to create
Errores actuales sobre los objetos modificables 
*/
select *
from ALL_ERRORS 

/*
ALL_INDEXES Descriptions of indexes on tables accessible to the user
Descripcion de los indices de las tablas
*/
select *
from ALL_INDEXES 

/*
ALL_IND_COLUMNS COLUMNs comprising INDEXes on accessible TABLES
*/
select *
from ALL_IND_COLUMNS 

/*
ALL_LOBS Description of LOBs contained in tables accessible to the user
*/
select *
from ALL_LOBS 

/*
ALL_OBJECTS Objects accessible to the user
Objetos accesibles por el usuario 
*/
select *
from ALL_OBJECTS

/*
ALL_OBJECT_TABLES Description of all object tables accessible to the user
Descripcion de todos los objetos de las tablas
*/
select *
from ALL_OBJECT_TABLES 

/*
ALL_SEQUENCES Description of SEQUENCEs accessible to the user
Descripcion de las secuencias definidas
*/
select *
from ALL_SEQUENCES 

/*
ALL_SNAPSHOTS Snapshots the user can access
Instantaneas que el usuario puede acceder 
*/
select *
from ALL_SNAPSHOTS 

/* **!!***
ALL_SOURCE Current source on stored objects that user is allowed to create
Codigo fuente  
*/
select *
from ALL_SOURCE
 
/*
ALL_SYNONYMS All synonyms accessible to the user
Descripcion de los sinonimos
*/
select *
from ALL_SYNONYMS 

/*
ALL_TABLES Description of relational tables accessible to the user
Descripcion de las tablas del esquema
*/
select *
from ALL_TABLES 

/*
ALL_TAB_COLUMNS Columns of user's tables, views and clusters
Descripcion de las columnas de las tablas 
*/
select *
from ALL_TAB_COLUMNS 

/*
ALL_TAB_COL_STATISTICS Columns of user's tables, views and clusters
*/
select *
from ALL_TAB_COL_STATISTICS

/*
ALL_TAB_COMMENTS Comments on tables and views accessible to the user
Comentarios de las tablas 
*/
select *
from ALL_TAB_COMMENTS 

/*
ALL_TRIGGERS Triggers accessible to the current user
*/
select *
from ALL_TRIGGERS

/*
ALL_TRIGGER_COLS Column usage in user's triggers or in triggers on user's tables
*/
select *
from ALL_TRIGGER_COLS

/*
ALL_TYPES Description of types accessible to the user
*/
select *
from ALL_TYPES 

/*
ALL_UPDATABLE_COLUMNS Description of all updatable columns
Descripcion de las columnas modificables
*/
select *
from ALL_UPDATABLE_COLUMNS

/*
ALL_USERS Information about all users of the database
Informacion de los usuarios
*/
select *
from ALL_USERS

/*
ALL_VIEWS Description of views accessible to the user
*/
select *
from ALL_VIEWS 


martes, 8 de junio de 2010

Eventos en JavaScript

onAbort 
    El usuario interrumpe la carga de una imagen
onBlur  
    Un elemento de formulario, un campo del formulario o marco pierden el foco
onChange  
    El valor de un campo de formulario cambia
onClick  
    Se hace click en un objeto, campo de formulario o formulario
onDbClick  
    Se hace doble click en un objeto, campo de formulario  o formulario
onDragDrop  
    El usuario arrastra y suelta un objeto en la ventana
onError  
    La carga de un archivo produce un error
onFocus 
    Un objeto, campo o formulario recibe el foco
onKeyDown
    El usuario pulsa una tecla
onKeyPress
    El usuario mantiene pulsada una tecla
onKeyUp
    El usuario suelta una tecla 
onLoad
    El navegador termina la carga de una ventana o formulario
onMouseDown
    El usuario pulsa un botón del ratón
onMouseMove
    El usuario mueve el puntero
onMouseOut
    El puntero abandona una área o enlace
onMouseOver
    El puntero entra en una área o imagen
onMouseUp
    El usuario libera un botón del ratón
onMove
    Se mueve una ventana o un marco
onReset
    El usuario limpia un formulario
onResize
    Se cambia el tamaño de una ventana o marco
onSelect
    Se selecciona el texto del campo texto o área de texto de un formulario
onSubmit
    El usuario envía un formulario
onUnload
    El usuario abandona una página

*(Versiones Javascript 1.0-1.1-1.2)