sábado, 13 de octubre de 2012

Windows Mobile con C# y datadrid

En esta ocasión me interesa compartirles en lo que estoy trabajando ahorita con aplicaciones móviles para pocket PC.

En este caso utilizaremos;
  • Lenguaje de programación C# o C sharp.
  • Programación orientada a objetos. :)
Los requerimientos son:
Una vez instalados todos los requerimientos procedemos a seguir los pasos siguientes:
  • Paso 1. Crear nuevo proyecto "Smart Device Project"
  • Paso 2 . Elegir la plataforma "Windwos Mobile 5.0 Pocket PC SDK" con "Device Application"

al click a "OK"  se cargará el proyecto....



  • Paso 3. Crear una base de datos llamada "Inventario" y una tabla llamada "artículos"
Vamos al proyecto agregamos un nuevo item y en DATA seleccionamos "database file", al dar agregar aparece una ventana dar click en "cancelar" no es necesario crear un data set.

Nota: en lo personal los data set creados en   diseño no me gustan, prefiero hacerlos manuales...

Creamos la tabla y posteriormente para efectos de muestra la llenamos con datos...



  • Paso 4. Agregar un datagrid

Nota: en caso de enlazar la aplicación a una base de datos normal deben agregar la referencia "System.Data.SqlClient", en este ejemplo se necesita la referencia  "System.Data.SqlServerCe" debido a que es una base de datos compacta incluida en el proyecto.

  • Paso 5. Crear una clase llamada "ConnectClass" 

Primero tenemos que agregar...


using System;
using System.Data;
using System.Data.SqlServerCe;
using System.Windows.Forms;


En esa función de la clase se añade código para establecer la conexión con la base de datos.

public ConnectClass()
{
try
String path;/*Variable para la ruta de la BD*/

path = "Data Source=" + System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\inventario.sdf";

SqlCeCon = new SqlCeConnection(path);/*asignar a la conexión la ruta*/

SqlCeCon.Open();}/*abrir conexión para  verificar */

catch (SqlCeException e)
MessageBox.Show("Error de conexión , error:"+ e.Message);}/*Mensaje en caso  de falla de conexión */
finally
{SqlCeCon.Close();}}/*Cerrar la conexión*/



Esta función devuelve un dataset y tiene como parámetros de entrada el comando SQL y el nombre de la tabla.

public DataSet ExecuteDataset(string SQL, string table)
        {
      try
            {
 // Abrimos la conexión 

            if (SqlCeCon.State==ConnectionState.Closed){
              SqlCeCon.Open();
            }

// Abrimos la conexión 

            DataSet ds = new DataSet(table); 
            SqlCeDataAdapter   Sqldapter =  new   SqlCeDataAdapter(SQL,SqlCeCon);          

// asigna un adaptador con el comando SQL y la conexión

            Sqldapter.FillSchema(ds, SchemaType.Source, table);
           
            Sqldapter.Fill(ds, table); // load data
         
            return ds; //return dataset with data
            }
            catch (SqlCeException e)
            {
                MessageBox.Show(e.Message);
                return null;
            }
            finally
            {
                SqlCeCon.Close();
            }
        }

y listo esa es la clase...Sencilla...
  • Paso 7. Agregar código en el formulario, específicamente en el evento Load
private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
 //se instancia la clase
InventoryMov.ConnectClass objRegisters = new InventoryMov.ConnectClass();

DataSet ds = new DataSet(); // dataset para cargar los datos

ds = objRegisters.ExecuteDataset("SELECT * from articulos", "articulos");

dataGrid1.DataSource = null;

dataGrid1.DataSource = ds.Tables[0]; //asignamos el dataset al datagrid
              
            }
            catch (Exception A)
            {
                MessageBox.Show(A.Message);
                dataGrid1.DataSource = null;
            }
             
        }

  • Paso 8. Correr la aplicación, pero antes debemos hacer algo importante, conectar un dispositivo, en este caso usaremos un emulador para ello vamos a   "tools" y seleccionamos "Connect to device", seleccionamos el emulador y dar click a "conectar" 

Damos click en "close"  , ejecutamos nuestra aplicación y esperamos....

  • Paso 9. Listo.



Espero que les sea de mucha utilidad!!! 

El proyecto se encuentra disponible en http://sdrv.ms/W5PDdI

4 comentarios:

  1. muchas gracias los métodos de insert, delete y update se hacen en el form es correcto?

    ResponderEliminar
  2. Hola muy buen aporte, me gustaría saber como puedo exportar los datos del datagrid a un archivo txt, ya puedo generar el nuevo New StreamWriter pero no puedo determinar las rows para exportarlas correctamente este es el código que tengo:

    Dim archivo As StreamWriter
    Dim Linea As String = Nothing
    Dim i As Integer = 0
    Dim obj As Object
    Dim Datos As Object
    Dim ds As New DataSet()
    obj = ScriptEngine
    'Datos = AddingNewEventArgs
    archivo = New StreamWriter("Lectura por zonas.txt")
    'archivo.WriteLine = "HOLA"
    With DataGrid1
    Datos = "hola Juan"
    For i = 0 To ARTICULOSBindingSource.Count - 1
    'Linea = DateValue("ZONAS")
    DataGrid1.Text = "DataGrid1"
    Linea = DataGrid1.Item(0).Cells(4).text

    Next
    archivo.WriteLine(Linea)
    End With
    archivo.Close()
    End Sub
    End Class

    ResponderEliminar