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();