LISTVIEW COM ADO APENAS VISUALIZAR

DANLEONHART 23/01/2011 23:28:52
#363184
Pessoal, tem como alguém deixar aqui um exemplo bem simples...mais simples mesmo de como preencher uma [Ô]ListView[Ô] com um RecordSet ADO...somente preencher mesmo...só para visualizar todo conteúdo da Tabela...

Encontrei alguns exemplos no site do Macoratti e outros...mas são muito complexo, por ter diversas outras funções interligadas...

Obrigado desde já!
ADRIANOM 24/01/2011 00:04:20
#363185
Resposta escolhida
Primeiro vc irá no seu form criar seu list view...
Nas propriedades dele (botão direito em cima do listview) vc irá marcar os itens View (3 - lvwReport), Arrange ( 0 - lvwNone), LabelEdit (1 - Manual).
Vai na aba, propriedades ainda, Column Headers, e irá criar as colunas do seu banco de dados que vc quer que apareça...(tipo: Código, Nome, Endereço... e por aí vai)

Ae vc vai fazer os códigos para carregar o seu gente fina listview.. Digamos que o nome dele é lstRegistro.

Ae eu gosto mto de criar uma função para ficar mais fácil de usá-la em vários componentes ao mesmo tempo .. mas vamos lá...

Option Explicit
Public CNN As New ADODB.Connection
Public RSFUN As New ADODB.Recordset [ô]Funcionários
Dim lst As Variant
Dim BancoDeDados, Identidade, Consexao As String

Public Sub PreencheLista()

Set RSFUN = New ADODB.Recordset [ô]RSFUN Referente a tabela Funcionários.
RSFUN.Open [Ô]SELECT * FROM FUNCIONARIOS ORDER BY NOME[Ô], CNN, adOpenStatic, adLockOptimistic [ô]abrirá a tabela funcionários ordenado por nomes
lstRegistro.ListItems.Clear
[ô]simula a função de replace com condição
If RSFUN.RecordCount = 0 Then
Set lst = lstRegistro.ListItems.Add(, , [Ô]<VAZIO>[Ô], , 1) [ô]Lembrando que o nº 1 é o ícone de um ImgList que tenho mas se quiser é só apagá-lo e apagar tb as vírgulas
Else
[ô]Preenche a lista
Do While Not RSFUN.EOF
Set lst = lstRegistro.ListItems.Add(, , RSFUN!CODIGO, , 1)
With lst
.SubItems(1) = RSFUN!Nome & [Ô][Ô]
.SubItems(2) = RSFUN!Sexo & [Ô][Ô]
.SubItems(3) = RSFUN!Nascimento & [Ô][Ô]
.SubItems(4) = RSFUN!RG & [Ô][Ô]
.SubItems(5) = RSFUN!CPF & [Ô][Ô]
.SubItems(6) = RSFUN!ENDERECO & [Ô][Ô]
.SubItems(7) = RSFUN!NUMERO & [Ô][Ô]
.SubItems(8) = RSFUN!BAIRRO & [Ô][Ô]
.SubItems(9) = RSFUN!Cidade & [Ô][Ô]
.SubItems(10) = RSFUN!CEP & [Ô][Ô]
.SubItems(11) = RSFUN!UF & [Ô][Ô]
.SubItems(12) = RSFUN!TEL & [Ô][Ô]
.SubItems(13) = RSFUN!CEL & [Ô][Ô]
.SubItems(14) = RSFUN!Funcao & [Ô][Ô]
.SubItems(15) = Format(RSFUN!SALARIO, [Ô]currency[Ô]) & [Ô][Ô]
.SubItems(16) = IIf(RSFUN!Comissionado, [Ô]Sim[Ô], [Ô]Não[Ô]) & [Ô][Ô]
.SubItems(17) = RSFUN!CARTRAB & [Ô][Ô]
.SubItems(18) = RSFUN!ADMISSAO & [Ô][Ô]
.SubItems(19) = RSFUN!DEMISSAO & [Ô][Ô]
.SubItems(20) = RSFUN!MOTIVO & [Ô][Ô]
.SubItems(21) = RSFUN!OBSERVACAO & [Ô][Ô]
.SubItems(22) = RSFUN!INCLUSAO & [Ô][Ô]
.SubItems(23) = RSFUN!ALTERACAO & [Ô][Ô]
.SubItems(24) = RSFUN!USUARIO & [Ô][Ô]
End With
RSFUN.MoveNext
Loop
End If
[ô]Lembrando que cada .SubItems(xx) é uma coluna que você criou nas propriedades da LstView Ok.?

End Sub

Private Sub Form_Load()

[ô]Abrindo um Banco de dados
Set CNN = New ADODB.Connection
BANCODEDADOS = [Ô]127.0.0.1:c:\bancodedados.gdb[Ô]
IDENTIDADE = [Ô]Senha_do_banco_de_dados[Ô]
CONEXAO = [Ô]Provider=SIBPROvider.2; SIB:Character Set =WIN1252; Data Source=[Ô] & BANCODEDADOS & [Ô];User ID=[Ô] & [Ô]SYSDBA[Ô] & [Ô];Password=[Ô] & IDENTIDADE & [Ô][Ô]
CNN.Open CONEXAO
CNN.CursorLocation = adUseClient

[Ô]Chama a função para carregar a listeView
Call PreencheLista
End Sub


é basicamente isso ..
Funciona certinho.. se vc colocar os componentes de acordo com o nome.. só não esquece tb de colocar um ImgList com um icone qlqr q vc goste, para aparecer no listview bonitinho.. somente um já basta...
Ah!!! e eu uso banco de dados firebird, mas se você utiliza outro, é so mudar a forma de abrir seu banco de dados.. ok?
DANLEONHART 24/01/2011 00:54:19
#363190
[txt-color=#0000f0]Obrigado ADRIANOM[/txt-color]
Muito bem explicado...era disso que eu precisava.
Obrigado mesmo


RODRIGOFERRO 24/01/2011 01:02:41
#363191
caso ja se resolvou, nao se esqueça de fechar o Topico...

Abraços
ADRIANOM 24/01/2011 01:02:52
#363192
Se certo, encerre e me pontue por gentileza...
Tópico encerrado , respostas não são mais permitidas