ERRO NO RETORNO DE DADOS

 Tópico anterior Próximo tópico Novo tópico

ERRO NO RETORNO DE DADOS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#486919 - 05/02/2019 10:05:20

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Bom dia, gracas a outro tpico criado por mim recentemente, FOXMAN me deu uma nova luz de como tornar meu cdigo mais enxuto,
baseado andei fazendo algumas pesquisas e acabei adaptando um cdigo que encontrei. o resultado est quase do jeito que queria.
Utilizando reflection consegui criar uma funo generalizada para preencher um DataReader e obter o resultado desejado, agora estou tentando criar uma funo generalizada para transferir os dados do datareader para um list

  Protected Friend Function RetornaComuVisita(ByVal _IDataReader As IDataReader) As List(Of ComunicadoVisita)
        Try
            Dim TypeClass As Type = GetType(ComunicadoVisita)
            Dim NovoClassObject As Object = Activator.CreateInstance(TypeClass)
            Dim objProperties As PropertyInfo() = TypeClass.GetProperties(BindingFlags.[Public] Or BindingFlags.Instance)
            Dim Lst As New List(Of ComunicadoVisita)
            While _IDataReader.Read
                For Each propertyInfo In objProperties
                    Dim propertySet As PropertyInfo = TypeClass.GetProperty(propertyInfo.Name)

                    If Not (_IDataReader(propertyInfo.Name.ToUpper()) Is DBNull.Value) Then
                        propertySet.SetValue(NovoClassObject, Convert.ChangeType(_IDataReader(propertyInfo.Name.ToUpper()), propertySet.PropertyType), Nothing)
                    End If

                Next
                Lst.Add(CType(NovoClassObject, ComunicadoVisita))
            End While
            Return Lst
        Catch __unusedException1__ As Exception
            Throw
        End Try
    End Function


O problema que mesmo retornando a quantidade de registros corretos, ela preenche todo o list com os dados do ultimo registro.
Se alguem puder me dar uma dica...

Obrigado desde j


O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


#486920 - 05/02/2019 10:12:43

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
O que voc quer basicamente um mtodo genrico para retornar um List<T>. Tenho toda uma srie de vdeos que trata disso e muito mais...

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#486921 - 05/02/2019 10:27:09

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Valeu KERP, vou dar uma olhada nos seus videos

O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


Resposta escolhida #486930 - 05/02/2019 14:09:04

JABA
CABO FRIO
Cadast. em:Agosto/2005


Crie a instncia dentro do loop como est abaixo pra ver se corrige.

Protected Friend Function RetornaComuVisita(ByVal _IDataReader As IDataReader) As List(Of ComunicadoVisita)
        Try
            Dim TypeClass As Type = GetType(ComunicadoVisita)
            Dim NovoClassObject As Object
            Dim objProperties As PropertyInfo() = TypeClass.GetProperties(BindingFlags.[Public] Or BindingFlags.Instance)
            Dim Lst As New List(Of ComunicadoVisita)
            While _IDataReader.Read

                 NovoClassObject = Activator.CreateInstance(TypeClass)

                For Each propertyInfo In objProperties
                    Dim propertySet As PropertyInfo = TypeClass.GetProperty(propertyInfo.Name)

                    If Not (_IDataReader(propertyInfo.Name.ToUpper()) Is DBNull.Value) Then
                        propertySet.SetValue(NovoClassObject, Convert.ChangeType(_IDataReader(propertyInfo.Name.ToUpper()), propertySet.PropertyType), Nothing)
                    End If

                Next
                Lst.Add(CType(NovoClassObject, ComunicadoVisita))
            End While
            Return Lst
        Catch __unusedException1__ As Exception
            Throw
        End Try
    End Function


_______________________________________________________________________________________________

Se a alma ou esprito so imateriais, como eles fazem para se localizar quando o corpo est em movimento?



#486935 - 05/02/2019 15:31:26

FOXMAN
BARRETOS
Cadast. em:Janeiro/2001


Membro da equipe
Essa funo no genrica.
Ela retorna uma lista de objetos do tipo ComunicadoVisita.
O correto seria retornar uma Lista de OBJECT pois assim vc Retornaria a Lista do Objeto desejado.

De uma pesquisada sobre objetos genricos :

Veja/Leia : Objetos Genricos


Grupo DotNet.Br no FaceBook

Grupo WhatsDev



#486936 - 05/02/2019 16:07:41

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


JABA, era isso que faltava, rodou beleza!!!!!!!! Valeu

FOXMAN, como estava desenvolvendo essa classe, utilizei ela para testes e aprendizado, pra entender corretamente como funciona.
Essa a minha maneira de aprender, substituindo partes do cdigo pra poder observar o resultado e entender como chegar l.
Eu sou meio lerdo, ento preciso ir substituindo partes do cdigo pra entender como funciona, v-lo funcionando em um todo, s vezes me assusta rsrsrsrs
E obrigado pela dica

KERPLUNK, apesar do JABA resolver meu problema, vi em seus videos alguns cdigos que me interessaram muito, vou continuar estudando por eles


O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por DAMASCENO.CESAR em 05/02/2019 16:08:22