because when adding elements to a list, I repeat the last data in all the elements, with visual basic .net 2017

0

Friends,

There are a couple of similar queries with possible solutions delivered, but as I am very new to this vbasic .net I do not understand them ...

In advance, thanks

Here is the code ... I have added some lines to follow up the problem ...

Public Function BuscarMenu_Fms(ByVal sNodo As String, ByVal entMenu_Fms As Entidad_Menu_Fms) As List(Of Entidad_Menu_Fms)

    Dim drDataReader As SqlDataReader
    Dim reg As New Entidad_Menu_Fms
    Dim wlista As New List(Of Entidad_Menu_Fms)
    Dim yLista() As Entidad_Menu_Fms
    Dim escribir As Object
    ' 
    ' inicio parrafo debug
    ' :::Ruta donde crearemos nuestro archivo txt
    Dim sRuta As String = "C:\Proyectos.Net\WebFms\"
    ' :::Nombre del archivo
    Dim sArchivo As String = "datos_Menu_Fms.Buscar.txt"

    Dim fs As FileStream
    Dim x As Integer
    Dim y As Integer

    ' :::Validamos si la carpeta de ruta existe, si no existe la creamos
    Try
        If File.Exists(sRuta) Then
            ' :::Si la carpeta existe creamos o sobreescribios el archivo txt
            fs = File.Create(sRuta & sArchivo)
            fs.Close()
        Else
            ' :::Si la carpeta no existe la creamos
            Directory.CreateDirectory(sRuta)
            ' :::Una vez creada la carpeta creamos o sobreescribios el archivo txt
            fs = File.Create(sRuta & sArchivo)
            fs.Close()
            '
            escribir = New StreamWriter(sRuta & sArchivo)
            x = 0
            escribir.WriteLine(" :::")
            escribir.WriteLine(" ::: Registros")
            escribir.WriteLine(" :::")
            '
        End If
    Catch ex As Exception
        'MsgBox("Se presento un problema al momento de crear el archivo: " & sRuta & sArchivo & " ::: " & ex.Message, MsgBoxStyle.Critical, ":::maar:::")
    End Try
    ' fin parrafo debug
    '

    Try
        Conectar()
        cmd = New SqlCommand("proc_Menu_Fms_Search", cnn)
        cmd.CommandType = CommandType.StoredProcedure
        With cmd.Parameters
            .AddWithValue("@sNodo", sNodo)
            .AddWithValue("@sNodo0", entMenu_Fms.sNode0)
            .AddWithValue("@sNodo1", entMenu_Fms.sNode1)
            .AddWithValue("@sNodo2", entMenu_Fms.sNode2)
            .AddWithValue("@sNodo3", entMenu_Fms.sNode3)
            .AddWithValue("@sNodo4", entMenu_Fms.sNode4)
            .AddWithValue("@sNodo5", entMenu_Fms.sNode5)
        End With

        If cmd.ExecuteNonQuery Then

            drDataReader = cmd.ExecuteReader

            While drDataReader.Read

                reg.sNode0 = drDataReader.GetValue(0).ToString()
                reg.sNode1 = drDataReader.GetValue(1).ToString()
                reg.sNode2 = drDataReader.GetValue(2).ToString()
                reg.sNode3 = drDataReader.GetValue(3).ToString()
                reg.sNode4 = drDataReader.GetValue(4).ToString()
                reg.sNode5 = drDataReader.GetValue(5).ToString()
                reg.sNode6 = drDataReader.GetValue(6).ToString()
                reg.sForm = drDataReader.GetValue(7).ToString()
                reg.sDescription = drDataReader.GetValue(8).ToString()
                reg.sDescription_Text_Code = drDataReader.GetValue(9).ToString()
                reg.sFavourite_Description = drDataReader.GetValue(10).ToString()
                reg.sFavourite_Description_Text_Code = drDataReader.GetValue(11).ToString()
                reg.sImage = drDataReader.GetValue(12).ToString()
                reg.sID_Opcion = drDataReader.GetValue(13).ToString()
                reg.sStatus = "ok"
                ' 
                ' inicio parrafo debug
                ' :::Escribimos una linea en nuestro archivo TXT con el formato que este separado por coma (,)
                Try
                    y = y + 1
                    ReDim Preserve yLista(y)
                    yLista(y) = reg
                    escribir.WriteLine(" :::")
                    escribir.WriteLine(" ::: reg (" + CStr(y))
                    escribir.WriteLine(" :::")
                    escribir.WriteLine(CStr(y) + ", " + reg.sID_Opcion + "," + reg.sDescription)
                    escribir.WriteLine(" :::")
                    escribir.WriteLine(" ::: yLista (" + CStr(y) + ")")
                    escribir.WriteLine(" :::")
                    For x = 1 To y
                        ' :::Escribimos una linea en nuestro archivo TXT con el formato que este separado por coma (,)
                        escribir.WriteLine(" ::: ::: " + CStr(x) + ", " + yLista(x).sID_Opcion + "," + yLista(x).sDescription)
                    Next x
                Catch ex As Exception
                    MsgBox("Se presento un problema al escribir en el archivo: " & sRuta & sArchivo & " ::: " & ex.Message, MsgBoxStyle.Critical, ":::maar:::")
                End Try
                ' fin parrafo debug
                '
                '
                wlista.Add(reg)
                ' 
                ' inicio parrafo debug
                ' :::grabamos como va el contenido de la wlista
                Try
                    escribir.WriteLine(" :::")
                    escribir.WriteLine(" ::: wLista (" + CStr(wlista.Count - 1) + ")")
                    escribir.WriteLine(" :::")
                    For x = 0 To wlista.Count - 1
                        ' :::Escribimos una linea en nuestro archivo TXT con el formato que este separado por coma (,)
                        escribir.WriteLine(CStr(x) + "," + wlista(x).sID_Opcion + "," + wlista(x).sDescription)
                    Next x
                Catch ex As Exception
                    MsgBox("Se presento un problema al escribir en el archivo: " & sRuta & sArchivo & " ::: " & ex.Message, MsgBoxStyle.Critical, ":::maar:::")
                End Try
                ' fin parrafo debug
                '
            End While

            If wlista.Count < 1 Then

                reg.sStatus = "bad"

                wlista.Add(reg)

            End If

            drDataReader.Close()

            ' 
            ' inicio parrafo debug
            ' :::grabamos el contenido de la wlista
            Try
                escribir.WriteLine(" :::")
                escribir.WriteLine(" ::: yLista final (" + CStr(y) + ")")
                escribir.WriteLine(" :::")
                For x = 1 To y
                    ' :::Escribimos una linea en nuestro archivo TXT con el formato que este separado por coma (,)
                    escribir.WriteLine(" ::: ::: " + CStr(x) + ", " + yLista(x).sID_Opcion + "," + yLista(x).sDescription)
                Next x
                '
                escribir.WriteLine(" :::")
                escribir.WriteLine(" ::: wLista final(" + CStr(wlista.Count - 1) + ")")
                escribir.WriteLine(" :::")
                For x = 0 To wlista.Count - 1
                    ' :::Escribimos una linea en nuestro archivo TXT con el formato que este separado por coma (,)
                    escribir.WriteLine(CStr(x) + "," + wlista(x).sID_Opcion + "," + wlista(x).sDescription)
                Next x
            Catch ex As Exception
                MsgBox("Se presento un problema al escribir en el archivo: " & sRuta & sArchivo & " ::: " & ex.Message, MsgBoxStyle.Critical, ":::maar:::")
            End Try
            escribir.Close()
            ' fin parrafo debug
            '

            Return wlista

        Else

            reg.sStatus = "bad"

            wlista.Add(reg)

            Return wlista

        End If

    Catch ex As Exception

        MsgBox(ex.Message)

        reg.sStatus = "bad"

        wlista.Add(reg)

        Return wlista

    End Try
    cnn.Close()
End Function
    
asked by Miguel Alamos 11.12.2018 в 20:25
source

0 answers