lunes, 18 de enero de 2010

Aplicación para PocketPC 1

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:






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

No hay comentarios:

Publicar un comentario