CLASSES COLLECTION NO VB.NET
Pessoal, agora estou definitivamente migrando para o VB.net, usando a versão 2010. Ja havia trabalhado algumas rotinas mais nada grande. Agora estou mesmo batando a mão na massa com VB.net. Estou criando classes para acessar o banco de dados e me esbarrei em um problema. No VB6 para acessar um conjunto de registros eu um uma classe do tipo collection, que na verdade é uma busca dos registros para memória. No vb.net tem como fazer isso??? alguem tem algum exemplo de como posso fazer isso? Aproveitando a oportunidade, no VB.net não existe o [Ô]Class builer[Ô] que tem no VB6???
O q vc quer? Colocar os dados retornados do BD em uma Collection utilizando classes?
Se for isso, veja se este exemplo ajuda.
Aqui embaixo está a classe (nomeada Classes):
[txt-color=#0000f0]Public Class[/txt-color] Classes
[txt-color=#0000f0]Public ReadOnly Property [/txt-color]BuscarNomes [txt-color=#0000f0]As Collection[/txt-color]
[txt-color=#0000f0]Get
Dim[/txt-color] C [txt-color=#0000f0]As New[/txt-color] ADODB.Connection, RecSet [txt-color=#0000f0]As[/txt-color] ADODB.RecordSet
C.Open(Conexao)
RecSet = C.Execute([txt-color=#e80000][Ô]select nome from tblFuncionarios[Ô][/txt-color])
[txt-color=#0000f0]While Not[/txt-color] RecSet.EOF
Lista_de_Membros.Add(RecSet([txt-color=#e80000][Ô]nome[Ô][/txt-color]).Value.ToString)
RecSet.MoveNext()
[txt-color=#0000f0]End While[/txt-color]
RecSet = [txt-color=#0000f0]Nothing[/txt-color]
C.Close()
Return Lista_de_Membros
[txt-color=#0000f0]End Get
End Property
End Class[/txt-color]
Você pode utilizar esta classe assim:
No click do botão, por exemplo:
[txt-color=#0000f0]Dim[/txt-color] Nomes [txt-color=#0000f0]As New Collection
Dim[/txt-color] ObjClasses [txt-color=#0000f0]As New[/txt-color] Classes
Nomes = ObjClasses.BuscarNomes
Espero ter te ajudado.
Repare que eu setei a classe como somente leitura ([txt-color=#0000f0]Public ReadOnly[/txt-color]), ou seja, você não poderá enviar valores para dentro dela, só retornar.
Eu aconselho um estudo detalhado para que você possa aprender o uso do [txt-color=#0000f0]Set[/txt-color] ([txt-color=#0000f0]Byval[/txt-color] Value)... [txt-color=#0000f0]End Set[/txt-color] em suas classes.
abraços.
Se for isso, veja se este exemplo ajuda.
Aqui embaixo está a classe (nomeada Classes):
[txt-color=#0000f0]Public Class[/txt-color] Classes
[txt-color=#0000f0]Public ReadOnly Property [/txt-color]BuscarNomes [txt-color=#0000f0]As Collection[/txt-color]
[txt-color=#0000f0]Get
Dim[/txt-color] C [txt-color=#0000f0]As New[/txt-color] ADODB.Connection, RecSet [txt-color=#0000f0]As[/txt-color] ADODB.RecordSet
C.Open(Conexao)
RecSet = C.Execute([txt-color=#e80000][Ô]select nome from tblFuncionarios[Ô][/txt-color])
[txt-color=#0000f0]While Not[/txt-color] RecSet.EOF
Lista_de_Membros.Add(RecSet([txt-color=#e80000][Ô]nome[Ô][/txt-color]).Value.ToString)
RecSet.MoveNext()
[txt-color=#0000f0]End While[/txt-color]
RecSet = [txt-color=#0000f0]Nothing[/txt-color]
C.Close()
Return Lista_de_Membros
[txt-color=#0000f0]End Get
End Property
End Class[/txt-color]
Você pode utilizar esta classe assim:
No click do botão, por exemplo:
[txt-color=#0000f0]Dim[/txt-color] Nomes [txt-color=#0000f0]As New Collection
Dim[/txt-color] ObjClasses [txt-color=#0000f0]As New[/txt-color] Classes
Nomes = ObjClasses.BuscarNomes
Espero ter te ajudado.
Repare que eu setei a classe como somente leitura ([txt-color=#0000f0]Public ReadOnly[/txt-color]), ou seja, você não poderá enviar valores para dentro dela, só retornar.
Eu aconselho um estudo detalhado para que você possa aprender o uso do [txt-color=#0000f0]Set[/txt-color] ([txt-color=#0000f0]Byval[/txt-color] Value)... [txt-color=#0000f0]End Set[/txt-color] em suas classes.
abraços.
Cara a questão do Builder, acho que foi colocado em seu lugar o CODE SNIPPETS.
São pedaços, trechos de códigos genéricos para você utilizar quando quiser.
Para criar uma classe genérica, por exemplo:
1. Você cria uma classe normalmente e clique nela para abrÃ-la;
2. No editor de códigos da classe, digite: [txt-color=#0000f0]?[/txt-color] (ponto de interrogação) e tecle Tab;
Vai aparecer um InteliSense com várias opções de códigos para você escolher
3. Para este exemplo clique duas vezes em : [txt-color=#0000f0]Code Patterns: If, For Each, Try Catch, Property, etc[/txt-color];
4. Depois clique em: [txt-color=#0000f0]Properties, Procedures, Events[/txt-color]
5. Finalmente em: [txt-color=#0000f0]Define a Property[/txt-color]
Seu resultado deve ser este:
[txt-color=#0000f0]Private[/txt-color] newPropertyValue [txt-color=#0000f0]As String[/txt-color]
___________________________________
[txt-color=#0000f0]Public Property[/txt-color] NewProperty() [txt-color=#0000f0]As String[/txt-color]
[txt-color=#0000f0]Get
Return[/txt-color] newPropertyValue
[txt-color=#0000f0]End Get
Set[/txt-color]([txt-color=#0000f0]ByVal[/txt-color] value [txt-color=#0000f0]As String[/txt-color])
newPropertyValue = value
[txt-color=#0000f0]End Set
End Property[/txt-color]
São pedaços, trechos de códigos genéricos para você utilizar quando quiser.
Para criar uma classe genérica, por exemplo:
1. Você cria uma classe normalmente e clique nela para abrÃ-la;
2. No editor de códigos da classe, digite: [txt-color=#0000f0]?[/txt-color] (ponto de interrogação) e tecle Tab;
Vai aparecer um InteliSense com várias opções de códigos para você escolher
3. Para este exemplo clique duas vezes em : [txt-color=#0000f0]Code Patterns: If, For Each, Try Catch, Property, etc[/txt-color];
4. Depois clique em: [txt-color=#0000f0]Properties, Procedures, Events[/txt-color]
5. Finalmente em: [txt-color=#0000f0]Define a Property[/txt-color]
Seu resultado deve ser este:
[txt-color=#0000f0]Private[/txt-color] newPropertyValue [txt-color=#0000f0]As String[/txt-color]
___________________________________
[txt-color=#0000f0]Public Property[/txt-color] NewProperty() [txt-color=#0000f0]As String[/txt-color]
[txt-color=#0000f0]Get
Return[/txt-color] newPropertyValue
[txt-color=#0000f0]End Get
Set[/txt-color]([txt-color=#0000f0]ByVal[/txt-color] value [txt-color=#0000f0]As String[/txt-color])
newPropertyValue = value
[txt-color=#0000f0]End Set
End Property[/txt-color]
Pegudo, mais a variável [Ô]Lista_de_Membros[Ô] é declarada como o que???
Desculpa foi erro meu, o certo é:
[txt-color=#0000f0]Public Class [/txt-color]Classes
[txt-color=#0000f0]Public ReadOnly Property[/txt-color] BuscarNomes [txt-color=#0000f0]As[/txt-color] Collection
[txt-color=#0000f0]Get
Dim[/txt-color] C [txt-color=#0000f0]As New[/txt-color] ADODB.Connection, RecSet [txt-color=#0000f0]As[/txt-color] ADODB.RecordSet
C.Open(Conexao)
RecSet = C.Execute([txt-color=#e80000][Ô]select nome from tblFuncionarios[Ô][/txt-color])
BuscarNomes = [txt-color=#0000f0]New[/txt-color] Collection
[txt-color=#0000f0]While Not[/txt-color] RecSet.EOF
BuscarNomes.Add(RecSet([txt-color=#e80000][Ô]nome[Ô][/txt-color]).Value.ToString)
RecSet.MoveNext()
[txt-color=#0000f0]End While[/txt-color]
RecSet = [txt-color=#0000f0]Nothing[/txt-color]
C.Close()
[txt-color=#0000f0]Return[/txt-color] BuscarNomes
[txt-color=#0000f0]End Get
End Property
End Class[/txt-color]
[txt-color=#0000f0]Public Class [/txt-color]Classes
[txt-color=#0000f0]Public ReadOnly Property[/txt-color] BuscarNomes [txt-color=#0000f0]As[/txt-color] Collection
[txt-color=#0000f0]Get
Dim[/txt-color] C [txt-color=#0000f0]As New[/txt-color] ADODB.Connection, RecSet [txt-color=#0000f0]As[/txt-color] ADODB.RecordSet
C.Open(Conexao)
RecSet = C.Execute([txt-color=#e80000][Ô]select nome from tblFuncionarios[Ô][/txt-color])
BuscarNomes = [txt-color=#0000f0]New[/txt-color] Collection
[txt-color=#0000f0]While Not[/txt-color] RecSet.EOF
BuscarNomes.Add(RecSet([txt-color=#e80000][Ô]nome[Ô][/txt-color]).Value.ToString)
RecSet.MoveNext()
[txt-color=#0000f0]End While[/txt-color]
RecSet = [txt-color=#0000f0]Nothing[/txt-color]
C.Close()
[txt-color=#0000f0]Return[/txt-color] BuscarNomes
[txt-color=#0000f0]End Get
End Property
End Class[/txt-color]
Tópico encerrado , respostas não são mais permitidas