Ir para conteúdo
Fórum Script Brasil
  • 0

Conflito no Array


WesSouza

Pergunta

9 respostass a esta questão

Posts Recomendados

  • 0

Cara, primeiramente não há necessidade de colocar a fonte nesse tamanho :D Depois dá uma editada nisso...

Olha, se entendi corretamente você tá preenchendo um vetor com os dados do seu banco. Mas alguns registros estão vindo vazios e estão aparencendo no seu vetor como Null.

Porque esse registros em branco estão sendo trazidos? Deve-se verificar se seu SELECT está correto, algum LEFT JOIN provavelmente está inconsistente. De qualquer forma, não existe uma forma automática de excluir esses registros em branco.

Você deverá fazer um loop percorrendo todos os itens do vetor, verificando se está em branco/null e removê-lo do vetor em caso positivo.

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz um exemplo em C#, ConsoleApplication, usando ArrayList.

public static void TestaVetor()
        {
            ArrayList vetor = new ArrayList();

            for (int i = 0; i < 10; i++)
            {
                vetor.Add(i);
            }

            int valorDeletar;

            System.Console.WriteLine("Vetor antes da remoção");
            foreach (int valor in vetor)
            {
                System.Console.WriteLine(valor);
            }

            System.Console.WriteLine("Digite um valor entre 0 e 9 para deletar do vetor:");
            valorDeletar = Convert.ToInt16(System.Console.ReadLine());

            vetor.Remove(valorDeletar);

            System.Console.WriteLine("Vetor após remoção");
            foreach (int valor in vetor)
            {
                System.Console.WriteLine(valor);
            }

            System.Console.ReadKey();
        }

Link para o comentário
Compartilhar em outros sites

  • 0

Eta... basta converter :)

Public Sub TestaVetor()
            Dim vetor As new ArrayList()

            For i =0 To 9
                vetor.Add(i)
            Next

            Dim valorDeletar As Integer

            System.Console.WriteLine("Vetor antes da remoção")
            For Each valor In vetor
                System.Console.WriteLine(valor)
            Next

            System.Console.WriteLine("Digite um valor entre 0 e 9 para deletar do vetor:")
            valorDeletar = Convert.ToInt16(System.Console.ReadLine())

            vetor.Remove(valorDeletar)

            System.Console.WriteLine("Vetor após remoção")
            For Each valor In vetor
                System.Console.WriteLine(valor)
            Next

            System.Console.ReadKey()

End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

kk Eita não deu certo olha o código...

Imports System.Data

Imports System.Data.SqlClient

Public Class Class_Base_Relatorio_Advogados : Inherits Conect

Function relatorio_Advogados_Cadastrados_Base()

Dim con As New Conect

Dim array As New ArrayList

Dim a As New Class_Cadastro_Adv

Try

With con

.parametro.CommandText = "SELECT cod_OAB, nome_advogado, endereco_advogado, cep_advogado, telefone_advogado, celular_advogado, fax_advogado,email_advogado FROM advogado"

.conectar()

.dReader = .parametro.ExecuteReader

While .dReader.Read

array.Add(New Class_Cadastro_Adv(.dReader("cod_OAB").ToString(), .dReader("nome_advogado").ToString(), .dReader("endereco_advogado").ToString(), .dReader("cep_advogado").ToString(), .dReader("telefone_advogado").ToString(), .dReader("celular_advogado").ToString(), .dReader("fax_advogado").ToString(), .dReader("email_advogado").ToString))

End While

Return array

End With

Catch exSql As NullReferenceException

Throw New Exception(exSql.Message)

Catch exSql As SqlException

Throw New Exception(exSql.Message)

Finally

desconectar()

End Try

End Function

End Class :(

Link para o comentário
Compartilhar em outros sites

  • 0

Ai fica complicado. Sua instância da classe Class_Cadastro_Adv, de nome a, não está sendo usada. Preciso saber qual é o erro e o que tem nessa classe.

Porque está herdando uma classe de conexão para a sua classe, sendo que essa sua classe postada tem os Imports e o objeto con é uma instância da classe Connect?

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade eu utilizo aqui

Public Class Class_Cadastro_Adv

Private _uf As String

Private _nome As String

Private _endereco As String

Private _cep As String

Private _telefone As String

Private _celular As String

Private _fax As String

Private _email As String

Private _id As String

Public Sub New()

_uf = ""

_nome = ""

_endereco = ""

_cep = ""

_telefone = ""

_celular = ""

_fax = ""

_email = ""

_id = ""

End Sub

Public Sub New(ByVal id As Integer, ByVal nome As String, ByVal endereco As String, ByVal cep As String, ByVal telefone As String, ByVal celular As String, ByVal fax As String, ByVal email As String)

_id = oab

_nome = nome

_endereco = endereco

_cep = cep

_telefone = telefone

_celular = celular

_fax = fax

_email = email

End Sub

Public Property oab()

Get

Return _id

End Get

Set(ByVal value)

_id = value

End Set

End Property

Public Property nome()

Get

Return _nome

End Get

Set(ByVal value)

_nome = value

End Set

End Property

Public Property endereco()

Get

Return _endereco

End Get

Set(ByVal value)

_endereco = value

End Set

End Property

Public Property cep()

Get

Return _cep

End Get

Set(ByVal value)

_cep = value

End Set

End Property

Public Property telefone()

Get

Return _telefone

End Get

Set(ByVal value)

_telefone = value

End Set

End Property

Public Property celular()

Get

Return _celular

End Get

Set(ByVal value)

_celular = value

End Set

End Property

Public Property fax()

Get

Return _fax

End Get

Set(ByVal value)

_fax = value

End Set

End Property

Public Property email()

Get

Return _email

End Get

Set(ByVal value)

_email = value

End Set

End Property

End Class

Utilizo dessa forma para montar relatorio no Print Document.

e esta ocorrendo conflito quando no Banco possui algum valor em branco ele não consegue simplesmente não exibir nada.

Assim ocorrendo erro tentei usar IIf(IsDBNull(.dReader("cod_OAB")), 0, .dReader("cod_OAB"))

espero q seja o caminho.

Link para o comentário
Compartilhar em outros sites

  • 0

Você pode tratar isso no seu SELECT, não ficaria mais fácil?

SELECT cod_OAB, 
            nome_advogado, 
            endereco_advogado, 
            cep_advogado, 
            telefone_advogado,
            celular_advogado, 
            CASE WHEN fax_advogado IS NULL THEN 'Não cadastrado'
                     ELSE fax_advogado 
            END AS fax_advogado,
            CASE WHEN email_advogado IS NULL THEN 'Não cadastrado'
                     ELSE email_advogado
            END AS email_advogado
FROM advogado
Ou você pode fazer os testes (vou usar o Iif como citou) ao invocar o construtor da classe:
array.Add(
               New Class_Cadastro_Adv(
                           Iif(.dReader("cod_OAB").ToString().Trim() = "" Or IsDBNull(.dReader("cod_OAB").ToString()), 0, .dReader("cod_OAB").ToString()),
                           Iif(.dReader("nome_advogado").ToString().Trim() = "" Or IsDBNull(.dReader("nome_advogado").ToString(), "Não cadastrado", .drReader("nome_advogado").ToString()), 
...
Ou ainda, você pode instanciar um novo objeto (que você chamou de váriavel a, do tipo Class_Cadastro_Adv) e passar os dados por propriedade:
Dim a As New Class_Cadastro_Adv

...

While .dReader.Read

a.oab() = Iif(.dReader("cod_OAB").ToString().Trim() = "" Or IsDBNull(.dReader("cod_OAB").ToString()), 0, .dReader("cod_OAB").ToString())
a.nome() = Iif(.dReader("nome_advogado").ToString().Trim() = "" Or IsDBNull(.dReader("nome_advogado").ToString(), "Não cadastrado", .drReader("nome_advogado").ToString())

...

array.Add(a)

End While

Particularmente, eu trataria isso no SQL. Acho que fica mais organizado e não "suja" tanto o código da classe.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...