none
Obtener cantidad de elementos en una lista RRS feed

  • Pregunta

  • Buenas tardes.

    Tengo el siguiente problema.

    Estoy llenando una tabla con información de ingreso de personas.

    Tengo el id de la persona, la fecha y hora del ingreso y egreso.

    Lo que nose, es si el registro que tomo de un archivo plano es Ingreso o Egreso.

    Por lo tanto se me ocurrio hacer lo siguiente, poner en la tabla que tipo de registro es, si I (Ingreso) o E (Egreso).

    Para esto, lo que estoy intentando hacer es lo siguiente:

    Si la cantidad de "ID" que hay en la lista es impar, entonces es un Ingreso, si es par, es un Egreso.

    Un ejemplo.

    ID   Fecha-Hora

    10- 23/07/17 08:15:00  --> Ingreso por se impar la cantidad de ID = 10 que hay en ese momento

    10- 23/07/17 14:00:00  --> Egreso

    10-23/07/17 16:00:00  --> Ingreso nuevamente

    10-23/07/17 21:00:00   --> Egreso

    Esto es como lo estoy haciendo.

    Dim Control As New List(Of Integer)

      Control.Add(ID)

    IF "cantidad de ID en la control es nro impar

       Ingreso

    else

      egreso

    end if

    Como deberia hacer esto? O hay una opcion mejor que me recomiendan.


    Desde ya muchas gracias

    martes, 10 de octubre de 2017 17:17

Todas las respuestas

  • Seria mejor registrar el egreso y ingreso al momento de registrar esa tabla .

    Pues que pasaria si alguien no marca su salida , tomara un ingreso x salida y asi  consecutivamente causando falla de info. Pero si aun asi quieres continuar te sugiero usar un foreach seria la mejor opcion

    Estas en C# o VB?


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    martes, 10 de octubre de 2017 17:33
  • Estoy trabajando en Vb

    Te paso el codigo que tengo.

    Sub ProcesarArchivoPresentismo(ByRef Ruta As String, ByRef NombreArchivo As String)

            Try
                Dim dt As DataTable = New DataTable("Presentismo")
                dt.Columns.Add("Fecha", Type.GetType("System.DateTime"))
                dt.Columns.Add("TipoHorario", Type.GetType("System.String"))
                dt.Columns.Add("Nombre", Type.GetType("System.String"))
                dt.Columns.Add("Tarjeta", Type.GetType("System.String"))
                dt.Columns.Add("Tipo", Type.GetType("System.String"))

                Dim control As New List(Of Integer)
                Dim dtrow As DataRow

                Dim objReader As New StreamReader(Ruta + "\" + NombreArchivo)

                Dim sLine As String = ""
                Dim arrText As New ArrayList()
                SysLog("Inicio Proceso Archivo " + NombreArchivo)

                Dim posi As Integer
                posi = 1
                Do
                    sLine = objReader.ReadLine()
                    If Not sLine Is Nothing Then
                        arrText.Add(sLine)

                        Dim Separo() As String
                        Dim fecha As DateTime
                        Separo = Split(sLine, vbTab)

                        dtrow = dt.NewRow
                        fecha = Convert.ToDateTime(Separo(1))
                        dtrow("fecha") = fecha
                        dtrow("TipoHorario") = ""
                        dtrow("Nombre") = Separo(4)
                        dtrow("Tarjeta") = Separo(0)
                        
                        control.Add(CInt(Separo(0)))


    aca tengo de ver si es nro mpra o no, para colocarlo en la tabla



                        dt.Rows.Add(dtrow)

                    End If
                Loop Until sLine Is Nothing
                objReader.Close()

                'alta de Presentismo
                Dim func As New SetupDAL

                If func.Insertar_TablaPresentismo(dt) Then
                    SysLog("Alta de Presentismo correctamente")
                Else
                    SysLog("Error en el alta de Presentismo")
                End If


                SysLog("Fin Proceso Archivo " + NombreArchivo)

                SysLog("Inicia Copia del Archivo " + NombreArchivo + " a Procesados")
                My.Computer.FileSystem.MoveFile(Ruta + "\" + NombreArchivo, Ruta + "\Procesados\" + NombreArchivo)
                SysLog("Fin Copiar del Archivo " + NombreArchivo + " a Procesados")


            Catch ex As Exception
                SysLog(ex.Message)
                MsgBox(ex.Message)
            End Try
        End Sub

    martes, 10 de octubre de 2017 18:05