WesSouza Posted November 29, 2011 Report Share Posted November 29, 2011 Olá Consegui inserir um objeto no array mas ele não retorna do Banco de Dados campos Brancos ou nuloos.alguém sabe como Fazer com que ele só ebiba campos com informações e despense os brancos e nulos sem ocorrer Conflitos? Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted November 29, 2011 Report Share Posted November 29, 2011 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. Quote Link to comment Share on other sites More sharing options...
0 WesSouza Posted November 29, 2011 Author Report Share Posted November 29, 2011 kk Então realmente alguns dados do Banco estão "vazios" e nem sequer exibe qualqr coisa no meu RelátorioEu entendi a sua ideia de fazer um loop , mas não tenho certeza de como faze lo.Algum exemplo. :) Vlw Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted November 29, 2011 Report Share Posted November 29, 2011 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(); } Quote Link to comment Share on other sites More sharing options...
0 WesSouza Posted November 29, 2011 Author Report Share Posted November 29, 2011 Obrigado o exemplo é bom , mas utilizo o a Vb.netTeria algum exemplo no VB.Net !!Vlw. Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted November 29, 2011 Report Share Posted November 29, 2011 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 Quote Link to comment Share on other sites More sharing options...
0 WesSouza Posted November 29, 2011 Author Report Share Posted November 29, 2011 kk Eita não deu certo olha o código...Imports System.DataImports System.Data.SqlClientPublic 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 FunctionEnd Class :( Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted November 29, 2011 Report Share Posted November 29, 2011 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? Quote Link to comment Share on other sites More sharing options...
0 WesSouza Posted November 29, 2011 Author Report Share Posted November 29, 2011 Na verdade eu utilizo aquiPublic 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 PropertyEnd ClassUtilizo 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. Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted November 29, 2011 Report Share Posted November 29, 2011 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 WhileParticularmente, eu trataria isso no SQL. Acho que fica mais organizado e não "suja" tanto o código da classe. Quote Link to comment Share on other sites More sharing options...
Question
WesSouza
Olá Consegui inserir um objeto no array mas ele não retorna do Banco de Dados campos Brancos ou nuloos.
alguém sabe como Fazer com que ele só ebiba campos com informações e despense os brancos e nulos sem ocorrer Conflitos?
Link to comment
Share on other sites
9 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.