Jump to content
Fórum Script Brasil
  • 0

Conflito no Array


WesSouza

Question

9 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...