viernes, 23 de octubre de 2015

Cambiar tipo de dato PostgreSQL

Creando una base de datos he hecho esto:

create table departamentos
(idDepartamento serial,
codigo integer,
nombre varchar(50),
primary key (idDepartamento));

create table municipios
(idMunicipio serial,
codigo integer,
nombre varchar(50),
idDepartamento integer references departamentos(idDepartamento),
primary key (idMunicipio));

Pero me equivoque al dejar como integer el campo codigo de cada una de las tablas, para cambiar este tipo de dato podemos hacerlo así:

alter table departamentos alter column codigo type varchar(3);
alter table municipios alter column codigo type varchar(3);

domingo, 18 de octubre de 2015

Insertar valores integer en Postgresql con Codeigniter

Este es mi código de la función en el controlador que trabaja con los usuarios de una tabla de Postgresql.

function agregar_usuarios() {       
        $datos_insertar=$this->input->post();
        unset($datos_insertar['btn_enviar']); 
        $this->db->insert('contactos', $datos_insertar );
        return $this->db->insert_id();
    }

La tabla usuarios tiene la siguiente estructura:


Como pueden observar, los campos de edad y status son integer y en con la función agregar_usuarios(); me esta arrojando un error al hacerlo.

La solución es muy sencilla y es esta:

function agregar_usuarios() {       
        $datos_insertar=$this->input->post();
        unset($datos_insertar['btn_enviar']); 
        settype($datos_insertar['edad'],'integer');        settype($datos_insertar['status'], 'integer');
        $this->db->insert('contactos', $datos_insertar );
        return $this->db->insert_id();
    }

Establecer los datos como integer con la función settype() de PHP.

Como pueden observar, se esta haciendo un retorno del id insertado en la tabla contactos, pero aquí viene el otro lío que encontré al hacerlo.

  

Como pueden observar es un error con carácter "Warning" a pesar de que esta haciendo la inserción en la tabla normalmente.

La solución para la versión 2.2.4 de Codeigniter esta en el archivo:

\proyecto\system\database\drivers\postgre\postgre_driver.php

Solo coloquen la linea número 332 dentro de la function insert_id() en comentario, esto es:


 Y solucionado ...
 


Netbeans 8.0 y Codeigniter

Como hacer para que Netbeans 8.0 reconozca que estoy trabajando con el framework Codeigniter?

Seguiremos estos sencillos pasos:

1.  Creamos un directorio en la carpeta raíz de nuestro proyecto con el nombre:
"CI_Auto_Complete".


2. Dentro de este directorio crea un archivo con el nombre: "CI_AUTO_COMPLETE.php"

 3. Copia el siguiente texto en dicho archivo.
 4. Da clic derecho sobre tu proyecto en netbeans, en el menú que se despliega, busca "Properties", ahora "Include path"


Ahora en "Add folder", deberás buscar la carpeta que creamos anteriormente y decirle "OK".

Reinicia el Netbeans y listo, los ayudantes de siempre están para nuestro IDE favorito.


 

jueves, 9 de julio de 2015

Controlador genérico Impresoras Samsumg

El problema se planteo de la siguiente manera:

Se presento un problema con un computador que tenia un disco duro dañado, el cual después de comprar el respectivo disco y formatearlo, nos dispusimos a instalar las impresoras. Cuestión curiosa el hecho de que las impresoras a instalar eran Samsumg y lo digo como "cuestión curiosa" por la sencilla razón que esta multinacional provee un controlador genérico para sus impresoras. Pues este controlador genérico se instalo y lo mas de feliz tanto el usuario como mi persona, termine el trabajo.

Al otro día me llama el usuario contandome que al conectarse al servidor de la compañía a través de escritorio remoto en Windows, cuando empezaba a trabajar y mandaba a imprimir a las impresoras Samsumg, el escritorio remoto se cerraba.

Dure un buen tiempo asumiendo que algo pasaba en el servidor de la empresa, pues este "no reconocía las impresoras que estaban instaladas en el cliente" y reinstalaba las impresoras con el dichoso controlador genérico de Samsumg. Hice la prueba de hacer una impresión a PDF desde el servidor y salio bien, pero ni idea de que al instalar el controlador genérico de Samsumg volvería a causar el conflicto.

Así que dure su buen tiempo tratando de encontrar que era lo que causaba el error de que el "escritorio remoto" se cerrara por si solo cuando se enviaba la impresión. 

Tome la desición entonces de instalar el controlador que era propio de la impresora, descargado desde la página oficial de la multinacional y vuala que funciono el escritorio remoto a las mil maravillas.

Me ha sucedido en varias ocasiones que el dichoso controlador genérico a pesar de que instala de manera local bien las impresoras, cuando esa impresora se comparte en red el computador al que se conecta dicha impresora no la reconoce.

En conclusión: por favor instale solo los controladores correspondientes de dichas impresoras, por favor no use ese controlador genérico pues va a tener problemas.

Me permito aclarar que si es para un computador que no va a estar en red o no se van a compartir las impresoras, asumiría que se podría hacer sin problemas.