Go to content Go to navigation

Conectar un ComboBox a dos datasets en C#

Jun 19, 11:00 AM


Un problemilla que se me ha dado ultimamente: como alimentar un combobox en C# para que recoja los datos a seleccionar de una tabla en un dataset pero almacene o recupere los datos seleccionados en otro. Un ejemplo vale mas que mil palabras.

Tenemos dos tablas, una Departamentos y otra Puestos. Un Puesto puede ser ‘Responsable de departamento’, para lo cual almacena un campo numerico con el código de departamento.

Queremos que el combobox muestre todos los departamentos almacenados en la tabla, pero que el valor seleccionado sea el correspondiente al registro correspondiente de la tabla Puestos. Por razones de diseño de la capa de datos, tenemos ambas tablas almacenadas en datasets distintos, dsDeptos y dsPuest. El dataset correspondiente a la tabla Puestos está conectado a un objeto BindingSource que alimenta al formulario (BindingSource1).

La tabla Departamentos tiene los campos CodDepto y NombreDepto que identifican los mismos. El departamento tiene su correspondiente en Puesto mediante el campo RespDepto.

El ComboBox se llamará Combo1.

Bien, la forma de hacerlo es:

Combo1.DataSource:dsDeptos
Combo1.DisplayMember:Table.NombreDepto
Combo1.ValueMember:Table.CodDepto

con esto alimentamos los items del combo.

Combo1.SelectedValue:BindingSource1-RespDepto

o en código

Combo1.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.BindingSource1, "RespDepto", true));
Combo1.DataSource = dsDeptos;
Combo1.DisplayMember = "Table.NombreDepto";
Combo1.ValueMember = "Table.CodDepto";

Y eso es todo amigos

Comentarios [3]

Router Debian (I)

Feb 13, 07:36 PM


Vamos a utilizar un pc con la distribución Debian de Linux para compartir una conexión a Internet mediante modem.

1. Configuración NAT
Necesitamos configurar iptables para que haga las traducciones de red necesarias. Para ello usamos, en modo root, el siguiente comando:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

2. Guardar la configuración iptables
En otras distribuciones se hace mediante la siguiente linea
/etc/init.d/iptables save active

Si bien hay formulas para incorporar el script a Debian podemos usar el siguiente procedimiento:

  • Guardamos la configuración actual de iptables en un archivo (normalmente en /var/lib/iptables/)
    iptables-save -c > archivo

  • Creamos un script que ejecute la utilidad de restauración de iptables en if_up.d
    echo "iptables-restore -c < archivo" > /etc/network/ip-up.d/inicio-iptables

  • Damos permisos de ejecución a dicho script
    chmod a+x /etc/network/if-up.d/inicio-iptables

3. Habilitar el enrutamiento
echo "1" > /proc/sys/net/ipv4/ip_forward

Esto permite al sistema pasar los paquetes de una interfaz de red a otra. Para que esto sea permanente en cada inicio, ponemos a yes la opcion ip_forward del fichero /etc/network/options.

En los equipos clientes, basta con poner en puerta de enlace o gateway la dirección ip de nuestro equipo-router e introducir correctamente los servidores DNS si la configuración de la ip del cliente es estática.

Para mas información, consultar
Macnux
How to forge
Linux Magazine

Comentarios

Emparejar un móvil

Feb 5, 11:12 PM


Debido a la política de certificaciones de hardware de MS, la mayoría de dispositivos bluetooth/USB domésticos incorpora sus propios controladores y software de conexión, que pueden diferir del que viene por defecto con Windows XP. Si bien en esta receta explicaba como configurar un dispositivo de estas características, aquí describo el emparejamiento y acceso a un móvil desde un bluetooth de la marca zoom, una vez instalado con sus propios controladores.

1. Ir a ‘My Bluetooth Places’ (en el Escritorio)
2. Pulsar en el lateral ‘View devices in range’. Aparecen los dispositivos que ya ha detectado antes. Pulsar en ‘Search for devices in range’ (En el móvil debemos haber activado el bluetooth).
3. Aparece el o los móviles. Pulsar con el botón derecho sobre el móvil. En el menú, seleccionar ‘Pair device’.
4. Introducir la clave que deseemos.
5. En el móvil aparece una petición de confirmación de emparejamiento. Aceptamos e introducimos la misma clave. Se emparejan los dispositivos.
6. Ahora podemos hacer doble click sobre el teléfono (ha aparecido un marca como que está emparejado). Si no se descubren automáticamente los servicios del móvil, pulsar en ‘Discover services’.
7. En ‘OBEX File Transfer’ podemos acceder a las carpetas multimedia del móvil. Cualquier cosa que copiemos desde otra ventana a estas carpetas o que borremos aquí se estará modificando en el móvil.
8. Para envíar imágenes o archivos al ordenador desde el móvil, o bien lo cogemos desde estas carpetas, o desde el móvil seleccionamos la imágen y en el menu correspondiente, Enviar->Vía Bluetooth. Aparece un pc con un código identificador, lo seleccionamos y se envía. En el ordenador aparece un mensaje pidiendo permiso: tenemos que pinchar sobre el y pulsar ‘OK’ en la ventana que aparece. Si activamos ‘Always allow this device…’, ya no nos volverá a pedir permiso para este dispositivo.
9. Para realizar la acción anterior, no es necesario tener abierta la ventana de ‘My Bluetooth Places’ (pero sí deberemos haber emparejado el dispositivo antes), con tener enchufado el Bluetooth basta. Los archivos recibidos se almacenan en ‘Mis Documentos\Bluetooth Exchange Folder’.

Comentarios [1]

Compilar con g++

Jan 7, 12:29 AM


He estado haciendo unas pruebas con el g++, refrescando conocimientos de compilación... El caso es que crear un programa con Anjuta y Glade está muy bien, pero ¿como se hacía en plan básico?. Bien, pues este ejemplo es de prácticas de la carrera.

  1. Creamos las definiciones de nuestras clases en sus correspondientes ficheros .h
    /*******************/
    /* miclase.h */
    /*******************/
    class miclase
    {
    public:

    void escribe();
    };
  2. Introducimos el código en el correspondiente fichero .cc
    /*******************/
    /* miclase.cc */
    /*******************/
    #include <iostream>
    #include "./miclase.h"

    using std::cout;
    using std::cin;
    using std::endl;

    void miclase::escribe()
    {
    cout << "Hola mundo" << endl;
    }
  3. Creamos la funcion main en el fichero idem
    /*******************/
    /* main.cc */
    /*******************/
    #include "./miclase.h"
    #include <iostream>

    int main()
    {
    miclase m;

    m.escribe();
    std::cout << "Bieeeeen" << std::endl;

    return(0);
    }
  4. Compilamos con g++ incluyendo los .cc, pero no los .h
    g++ miclase.cc main.cc -o miclase.bin

Es importante el tema de los includes. En cada archivo .cc, es necesario incluir aquellas cabeceras necesarias, sin darse por incluidas por otros archivos .cc. El iostream de main.cc es necesario para usar std::cout , y hay que ponerlo aunque aparezca en miclase.cc. En cambio, no sería necesario si estuviese incluido en miclase.h .

Por otro lado, si quisieramos abreviar en archivos, siempre podríamos incluir el código de los métodos de la clase en el archivo de cabecera y evitarnos el miclase.cc .

Comentarios [2]

Configuración PocketPC

Dec 16, 01:31 AM


Active Sync + Bluetooth + Windows XP SP2

Instalar el Bluetooth USB

1. El USB al final de todo: ¿El ordenador está virgen de todo bluetooth? ¿No se ha conectado NUNCA el dispositivo BT al puerto USB? Si la respuesta es afirmativa, estamos de suerte: pasa directamente al punto 5.

2. Desinstala todo: Como lo lees, hay que eliminar toda la aplicación bluetooth y los dispositivos que hayan en el administrador de dispositivos (Panel de Control->Sistema->Hardware->Administrador de Dispositivos)

3. Enchufa el USB: ¿Ahora? Pues si. Windows instalará los drivers que considere oportunos. Es necesario para el siguiente punto.

4. Liberando los puertos: Nos vamos al Administrador de Dispositivos. En ‘Puertos Com y LPT’. Aparecerán unos puertos serie de Bluetooth. En cada uno de ellos Propiedades->Configuración de puerto->Avanzadas nos dará acceso a una pestaña donde deberemos seleccionar el número de puerto. Para dejar libre los puertos del 3 al 9 (que son los que usan la PDA), deberemos seleccionar dichos puertos para luego volver a cambiar el número de puerto y así dejar estos libres. Finalmente, los puertos deben quedar del 10 para arriba. (Ojo, hemos de respetar que no tengamos ningún puerto COM físico del 3 al 9)

5. Eliminando el driver de Windows: Nos vamos al directorio C:\Windows\inf (está oculto, para verlo necesitamos escribir la ruta completa en el explorador o desactivar la ocultación de archivos y directorios). En esta carpeta debemos eliminar o cambiar la extensión del archivo ‘bth.inf’.

6. Instalando el driver del dispositivo: Instalamoslos drivers del Bluetooth USB. Probado con uno de la marca Conceptronic, es necesario terminar la instalación y reiniciar el equipo SIN ENCHUFAR EL USB. Para ello hay que aceptar casi todos los mensajes que saca la instalación, aunque hay un mensaje de que no encuentra el dispositivo (lógico, no esta enchufado) que para que continúe hay que darle a ‘Cancelar’.

7. Enchufamos el Bluetooth: Una vez reiniciado enchufamos el dispositivo al USB. Windows detecta el hardware y te pide el controlador. Como no hemos quitado el CD de la instalación, detecta el driver y lo instala. Es esencial fijarse en que no detecta e instala el ‘Microsoft generic Bluetooth radio device’. Si es así es que algo hemos hecho mal (seguramente no hemos eliminado el ‘bth.inf’ correctamente).

Configuración de puertos

1. Anotamos los puertos: En la PDA, normalmente en el icono de Bluetooth->Configuración, hay una pestaña de configuración de puertos en que nos vienen los puertos de entrada y de salida en que está configurada la PDA. Anotamos ambos.

2. Configuración inicial: En el PC, nos vamos a Panel de Control->Configuración Bluetooth. Nos sale un asistente en el que podemos escoger los servicios que ofrece el equipo. Activamos todas las opciones que nos permitan ser detectados por otros equipos y nos aseguramos de activar el servicio de ‘puerto serie’.

3. Configuración de puertos: Pinchamos en Configuración Bluetooth de nuevo, con lo que accedemos a las propiedades del Bluetooth. En ‘Servicios’, añadimos puertos serie hasta que esté el puerto de salida de la PDA. Le activamos el inicio automático.

4. Permiso de conexión: En esa misma ventana, bajo la pestaña ‘Accesibilidad’, escogemos ‘Conectar solo los siguientes equipos’, detectamos la PDA y la asignamos.

5. Detección de equipos: En la PDA, agregamos una conexión de puerto serie desde ‘Administración de Bluetooth’ con el PC. Detecta el equipo, introducimos la clave tanto en la PDA como en el PC (ojo, atento a los globitos y mensajes de XP pidiendo la clave) y establecemos la conexión.

Conectando Active Sync

1. Puerto Active Sync: Abrimos Active Sync en el PC. Configuración y asignamos conexión por el puerto serie que es el de entrada en la PDA.

2. Conexión desde PDA: Abrimos Active Sync en la PDA. En Herramientas, asignamos modo de conexión Bluetooth.

3. Creación conexión: En ‘Administración de Bluetooth’, en la PDA, creamos una nueva conexión Active Sync. Seguimos los pasos y seleccionamos el equipo al que nos queremos conectar. Atentos a la confirmación desde el PC. Introducimos la clave y escogemos ‘conectar automáticamente’. En el PC, escogemos los elementos que queremos sincronizar y ‘Combinar datos’ si vamos a modificar datos tanto en la PDA como en el PC (es lo habitual).

4. E Voil� : Cuando queramos sincronizar, no tenemos mas que ir a ‘Administración de Bluetooth’ y activar la conexión Active Sync.

Referencias

Soluciones a los problema de Windows SP2, BT y AS

Comentarios [2]