Aplicación Para PocketPC #2

Sistema ejemplo usando SQL CE

 

Fecha: 15/Jun/2005 (11 de Junio del 2005)
Autor: David Fúnez (dfunez@hotmail.com)

 


El sistema es sencillo, una pantalla que captura datos y luego otra que convierte esa data a un archivo XML. Para los que programamos Visual Foxpro también es útil ya que desde la versión 7 podemos trabajar con este tipo de archivos.


 Bueno, creemos el proyecto, seleccionemos “Aplicación para Smart Device”:

Seleccionamos “Pocket PC” como plataforma de desarrollo, y “Aplicación para Windows” como tipo de proyecto a crear y pulsemos “Aceptar”.

Bueno ahora que ya tenemos creado nuestro proyecto “Sistema”, vemos como aparece el primer Form con su respectivo “MainMenu”, el cual por omisión lleva el nombre de “Form1”:

A este Form le cambiaremos el nombre, le pondremos “Menu”, para hacerlo en el Explorador de Soluciones pulse el botón derecho sobre “Form1”, seleccionamos “Cambiar Nombre” y le ponemos “Menu”.

Ahora pulsemos un clic sobre el Form1, y en la ventana de propiedades del Form1, cambie la propiedad (Name) de “Form1” a “Menu”. En el Explorador de Soluciones Pulse el botón derecho sobre “Sistema”, pulse clic sobre “Propiedades”, ahora cambiaremos el “Objeto Inicial”, de “Form1” a “Menu”, pulse “Apply” y “Ok” y continuemos.

 

Esta es la forma en que lucirán los Forms del sistema:

Este será nuestro Form Principal, cuyo nombre será “Menu”, como vimos anteriormente. Aquí es donde se creara la base de datos y la tabla con la que vamos a trabajar.

Private Sub menu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not File.Exists("\Program Files\Sistema\zafra.sdf") Then

 

            'creación de la base de datos

            Try

                Dim Engine As SqlCeEngine

                Engine = New SqlCeEngine

                Engine.LocalConnectionString = "DataSource=\Program Files\Sistema\zafra.sdf; Password=; Encrypt DataBase=False"

    'este es el comando que crea la base de datos

                Engine.CreateDatabase()

 

            'captura de errores de la base de datos

            Catch sqlex As SqlCeException

                Dim sqlError As SqlCeError

                For Each sqlError In sqlex.Errors

                    MessageBox.Show(sqlError.Message)

                Next

 

            'captura de otros errores

            Catch ex As Exception

                MessageBox.Show("Error " & ex.Message)

            End Try

 

            'creación de la tabla

            Dim cn As SqlCeConnection

 

            Try

                cn = New SqlCeConnection("Data Source=\Program Files\sistema\zafra.sdf")

                cn.Open()

                Dim cmd As SqlCeCommand = cn.CreateCommand

 

                ' Creación de la tabla de la base de datos

                cmd.CommandText = "CREATE TABLE Colecta (" & _

                                    "Lote integer NOT NULL PRIMARY KEY, " & _

                                    "Fecha     datetime, " & _

                                    "camion    nchar(5)," & _

                                    "cargas    integer)"

                cmd.ExecuteNonQuery()

 

               'si deseáramos crear otra tabla, haríamos “cmd.CommandTex=Create Table …”

               'y luego cmd.ExecuteNonQuery(), este proceso se repetiría para c/tabla a crear.

 

            Catch sqlex As SqlCeException

                Dim sqlError As SqlCeError

                For Each sqlError In sqlex.Errors

                    MessageBox.Show(sqlError.Message)

                Next

 

            Catch ex As Exception

                MessageBox.Show("Error " & ex.Message)

            Finally

                If cn.State <> ConnectionState.Closed Then

                    cn.Close()

                End If

            End Try

        End If

 End Sub

Estas son las opciones del Menú del sistema:

Los menus se programan igual que para escritorio.

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click

        Me.Close()

    End Sub

 

    Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click

        Dim frm As New colecta

        frm.Show()

    End Sub

 

    Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click

        Dim frm As New xml

        frm.Show()

    End Sub

Este es el form de la colecta de datos, en cual usaremos algunas validaciones y procedimientos:

Aquí utilice la función SoloNumeros deAngel Enrique Ruiz Pastor” para validar los Textboxs de Lote y Cargas.

Botón Nuevo:

llama a un procedimiento que limpia los TextBoxs

' Limpia los textboxes

    Private Sub LimpiaTextbox()

        Me.txtLote.Text = ""

        Me.txtFecha.Text = ""

        Me.txtCamion.Text = ""

        Me.txtCargas.Text = ""

    End Sub

Botón Guardar:

           ' Agregamos registro

            cmd.CommandText = "INSERT INTO colecta" & _

            "(lote, fecha, camion, cargas)" & _

            " VALUES (?, ?, ?, ?)"

 

            cmd.Parameters.Add(New SqlCeParameter("@lote", lot))

            cmd.Parameters.Add(New SqlCeParameter("@fecha", fec))

            cmd.Parameters.Add(New SqlCeParameter("@camion", truck))

            cmd.Parameters.Add(New SqlCeParameter("@cargas", car))

 

            cmd.Prepare()

            cmd.ExecuteNonQuery()

Botón Eliminar:

           'Eliminamos registro

            cmd.CommandText = "DELETE FROM colecta WHERE lote=" & Me.txtLote.Text

            cmd.ExecuteNonQuery()

Este form no servirá para convertir la tabla “colecta” a un archivo XML:

 

Private Sub btnXml_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnXml.Click

        Dim cn As SqlCeConnection

        Try

            cn = New SqlCeConnection("Data Source=\Program Files\sistema\zafra.sdf")

            cn.Open()

 

            Dim cmd As SqlCeCommand = cn.CreateCommand

 

            cmd.CommandText = "SELECT * FROM colecta"

            Dim da As New SqlCeDataAdapter(cmd)

            Dim ds As New DataSet

            da.Fill(ds)

 

            ' Aquí creamos el Archivo .XML

            ds.WriteXml("colecta.xml")

 

            MessageBox.Show("Archivo creado")

            Me.Close()

 

        Catch sqlex As SqlCeException

            Dim sqlError As SqlCeError

 

            For Each sqlError In sqlex.Errors

                MessageBox.Show(sqlError.Message)

            Next

 

        Catch ex As Exception

            MessageBox.Show(ex.Message)

 

        Finally

            If cn.State <> ConnectionState.Closed Then

                cn.Close()

            End If

        End Try

    End Sub

 

Espero que este ejemplo sea de ayuda al igual que el anterior de PocketPC con XML.  Si crees que han sido de utilidad para ti, por favor, vota por ellos… Saludos y hasta la próxima …


Espacios de nombres usados en el código de este artículo:

System.Data.SqlServerCE
System.IO

 


Fichero con el código de ejemplo: dfunez_Aplicacion_Para_pocketPC_2.zip - 40 KB


ir al índice