USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Como criar minha própria coleção???
Fabio-RSC
NITEROI
RJ - BRASIL
ENUNCIADA !
Postada em 21/01/2005 12:49 hs         
Preciso criar uma classe e eu quero fazer uma coleção que seria registros de uma tabela (cada registro seria um item da coleção), porém não consegui encontrar exeplo de como criar minha própria coleção na minha classe em lugar nenhum e nenhuma documentação tb.
Já tentei o VB Class Builder mas não consigo utilizar o código que ele cria para criar a minha coleção.
Será que alguém sabe como faço pra criar minha coleção dentro de minha classe??
   
Sandro
não registrado
ENUNCIADA !
Postada em 21/01/2005 13:13 hs   
Olá,
 
Use o objeto Collection:
 
Dim MinhaColecao as Collection
 
Set MinhaColecao = New Collection
 
 
 
   
kerplunk
Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 21/01/2005 13:40 hs         
Tem duas maneiras. A primeira é a que o Sandro mostrou, a segundo é uma Array contendo os registros.
   
Fabio-RSC
NITEROI
RJ - BRASIL
ENUNCIADA !
Postada em 21/01/2005 18:58 hs         
Sandro:
Isso eu já consegui fazer mas como armazendo os dados do registro da minha base de dados nesta classe??
 
Kerplunk:
Mas eu consigo tratar o array como um coleção, acessando os itens a aprtir de uma classe???
Como???
 
Obrigaado!
   
Sandro
não registrado
ENUNCIADA !
Postada em 21/01/2005 22:31 hs   
Olá Fábio,
 
No seu caso, você deverá criar um módulo de classe que se comportará como uma coleção de outra classe que representará os seus dados. Vou dar um exemplo, crie um módulo de classe e chame de cRegistro e coloque o seguinte código dentro dele:
 
'**************************************************
'Esta classe representa cada registro de sua tabela
'**************************************************
Option Explicit
'Cada campo de sua tabela deve estar descrito aqui como Private
'com seus respectivos tipos de dados
Private mCodigo As String, mNome As String
'Cada campo de sua tabela será uma propriedade da sua classe.
'Para que as propriedades sejam lidas e escritas, você deve
'ter dois procedimentos, um para escrita (Let) e outro para
'leitura (Get)
'Este é o de escrita, quando você atribui um valor a um campo:
Public Property Let Codigo(nCodigo As String)
    mCodigo = nCodigo
End Property
'Este é o de leitura, quando você lê o valor de um campo:
Public Property Get Codigo() As String
    Codigo = mCodigo
End Property
Public Property Let Nome(nNome As String)
    mNome = nNome
End Property
Public Property Get Nome() As String
    Nome = mNome
End Property
 
Agora, crie um outro módulo de classe, chame de colRegistros e coloque este código:
 
'**********************************************************
'Esta classe representa a sua coleção de registros (tabela)
'**********************************************************
Option Explicit
'Você deverá ter uma coleção padrão para armazenar cada instância
'da classe cRegistro que representa cada registro de sua tabela
Private mRegistros As Collection
'Método de adição de um registro
Public Function Add(Codigo As String, Nome As String) As cRegistro
   
    Dim ObjRegistro As cRegistro
   
    Set ObjRegistro = New cRegistro
    'Cada propriedade (campo) de seu registro deve estar aqui, ou pelo menos o básico
    'parea ser preenchido mais tarde
    ObjRegistro.Codigo = Codigo
    ObjRegistro.Nome = Nome
   
    Set Add = ObjRegistro
    Set ObjRegistro = Nothing
End Function
'Obtém um item específico, dado o seu índice
Public Property Get Item(Indice As Variant) As cRegistro
    Set Item = mRegistros(Indice)
End Property
'Fornece a quantidade de registros da coleção
Public Property Get Count() As Long
   
    Count = mRegistros.Count
   
End Property
'Remove um registro da coleção
Public Sub Remove(Indice As Variant)
   
    mRegistros.Remove Indice
End Sub
'Isto é usado quando você usa o loop For Each...Next
Public Property Get NewEnum() As IUnknown
   
    Set NewEnum = mRegistros.[_NewEnum]
End Property
'inicia a coleção
Private Sub Class_Initialize()
   
    Set mRegistros = New Collection
End Sub
'Destrói a coleção, liberando memória
Private Sub Class_Terminate()
   
    Set mRegistros = Nothing
End Sub
 
Pronto, você agora tem uma coleção de registros. Neste exemplo, eu crio um registro bem simples com um código alfa e um nome, mas você pode expandir isso para quantos campos quiser. Cada campo de sua tabela será uma propriedade da sua classe cRegistro.
Para instanciar a sua coleção, faça assim:
 
Dim MinhaColecao as colRegistros
 
Set MinhaColecao = New colRegistros
 
Para adicionar registros a ela, faça assim:
 
MinhaColecao.Add "001", "Fabio"
MinhaColecao.Add "002", "Sandro"
 
Agora você tem uma coleção com dois registros de dois campos cada, um código e um nome.
Para alterar o nome, faça assim:
 
MinhaColecao(2).Nome = "José"
 
Você pode acrescentar quantos campos quiser, mas lembre-se para cada campo você deverá criar uma variável dentro da classe cRegistro e duas procedures de propriedades, uma Let para receber os dados e outra Get para ler os dados gravados nela.
Ah!, não se esqueça de destruir a sua colelção quando não precisar mais dela:
 
Set MinhaColecao = Nothing
 
Qualquer dúvida, pode mandar.
 
um abraço,
Sandro.
   
Fabio-RSC
NITEROI
RJ - BRASIL
ENUNCIADA !
Postada em 24/01/2005 15:08 hs         
Cara...
Acho q vc matou o problema, pelo q vc escreveu acho q é exatamente o que eu quero. Vou fazer AGORA!
qq dúvida eu posto novamente.
 
MUITO Obrigado!
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página