Notifications
Clear all

Pesquisa com ListView

5 Posts
3 Usuários
0 Reactions
1,710 Visualizações
(@cvb2004)
Posts: 24
Eminent Member
Topic starter
 

Pessoal, eu aqui mais uma vez solicitando ajuda naquele meu banco de dados do Excel.

Estou com tela de Login OK, tela de cadastro OK, agora quero o seguinte:

Na mesma tela de cadastro colocar uma textbox para consulta de clientes. Ao clicar no botão de comando pesquisar, quero que os todos os clientes com aquele nome apareça numa ListView nesse mesmo formulário.

Detalhe, não quero que a ListView seja toda carregada ao iniciar o formulário, quero que somente ao clicar no botao pesquisar apareça os nomes dos clientes com aquele nome, ou aquele telefone, ou aquele CPF etc...

Outro detalhe, li algo sobre isso aqui mesmo no fórum. Queria que ao selecionar alguma linha dessa ListView, carregasse todos os dados do cliente selecionado, ou seja, seu cadastro completo numa nova janela, novo formulário.

Abraço rapaziada.

 
Postado : 10/04/2015 6:24 pm
(@laennder)
Posts: 62
Trusted Member
 

Bom dia,

Você pode fazer uma consulta SELECT para retornar os dados num recordset. Se não conhece, dê uma pesquisada sobre ADO. Com o recordset, você faz um loop pelos registros e preenche o list view.

Aqui um exemplo de uso SELECT com ADO.

http://www.vbadventure.com/2012/11/usin ... ba-part-1/ (Parte 1)
http://www.vbadventure.com/2012/12/usin ... excel-vba/ (Parte 2)

E aqui um exemplo de preenchimento de list view.

http://www.macoratti.net/13/10/vba_lvfso.htm

Espero ter ajudado

Laennder Alves
Microsoft MVP

 
Postado : 11/04/2015 5:43 am
(@cvb2004)
Posts: 24
Eminent Member
Topic starter
 

Bom dia,

Você pode fazer uma consulta SELECT para retornar os dados num recordset. Se não conhece, dê uma pesquisada sobre ADO. Com o recordset, você faz um loop pelos registros e preenche o list view.

Aqui um exemplo de uso SELECT com ADO.

http://www.vbadventure.com/2012/11/usin ... ba-part-1/ (Parte 1)
http://www.vbadventure.com/2012/12/usin ... excel-vba/ (Parte 2)

E aqui um exemplo de preenchimento de list view.

http://www.macoratti.net/13/10/vba_lvfso.htm

Espero ter ajudado

Meu caro, nao consegui entender nada dos dois primeiros links
O segundo pouco me ajudou.
Estou perdido, pode ser mais didático? sou leigo...
Não é possível que vou empacar meu banco de dados justo nessa parte de consulta. Mais alguem pra poder me ajudar, por favor?

 
Postado : 17/04/2015 5:32 pm
(@cvb2004)
Posts: 24
Eminent Member
Topic starter
 

Pessoal, pra mostrar o que eu preciso eu vou upar a planilha aqui, OK. Deem uma olhadinha, por favor, e me falem por onde devo seguir.
Só explicando:
na textbox ao lado do botão "consultar", quero colocar o nome do cliente e depois que clicar em "consultar" quero que todos os clientes com aquele nome apareça na listview.
Abraços

https://drive.google.com/file/d/0B9-0De ... sp=sharing

 
Postado : 17/04/2015 5:46 pm
(@setti)
Posts: 150
Estimable Member
 

Você agora tem que adaptar para a sua tabela do access e os campos do banco de dados que não sei quais são...
obrigado!!!

Private Sub CommandButton2_Click()
Dim nConn As New ADODB.Connection
Dim DB As Database

Dim nConn2 As New ADODB.Connection
Dim BANCO As New ADODB.Recordset
Dim BANCO1 As ADODB.Recordset
Dim SQL As String
Dim SQL2 As String
Dim Count

Dim nConectar As String
Dim nConectar2 As String
'Endereço e nome do banco de dados * habilite o provedor de acordo c/ sua versao:
' nConectar = "Provider=Microsoft.Jet.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "base.mdb"
nConectar = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & "c:psiquiatraDATABASEpsiquiatra.MDB"
nConn.ConnectionString = nConectar
nConn.Open
nConectar2 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & "c:psiquiatraDATABASEpsiquiatra.MDB"
nConn2.ConnectionString = nConectar2
nConn2.Open
Set BANCO1 = New ADODB.Recordset
BANCO1.Open ("AGENDAMENTO"), nConn2
Dim i As Integer

i = 0

Me.ListView1.ListItems.Clear
Me.ListView1.ColumnHeaders.Clear
Me.ListView1.View = lvwReport
Me.ListView1.Gridlines = True
ListView1.ColumnHeaders.Clear
Me.ListView1.ColumnHeaders.Add , , "", 0
Me.ListView1.ColumnHeaders.Add , , "NUM CLINICA", 60, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "NUM ORTODONTIA", 100, lvwColumnCenter

Me.ListView1.ColumnHeaders.Add , , "NOME DO CLIENTE", 1000, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "DATA", 120, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "PACIENTE DESDE", 120, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "SEXO", 120, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "TEL", 170, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "CEL", 170, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "CIDADE", 100, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "UF", 100, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "FORMA INGRESSO", 170, lvwColumnCenter
Me.ListView1.ColumnHeaders.Add , , "PACIENTE INDICOU", 100, lvwColumnCenter

'Aqui é nossa busca pelo que digitammos
'A busca pode ter qualquer parametro desde que lhe atenda
Dim CADASTRO(1 To 15)

CADASTRO(1) = UCase(Me.caixa_nome.Text)
'TextFILTROPROF.Text = CADASTRO(1)
'CADASTRO(2) = UCase(Me.Textcliente2.Text)
'Textcliente2.Text = CADASTRO(2)
If caixa_nome.Text = Null Then

MsgBox "CAMPO DE PESQUISA PARA AGENDA: NOME ESTÁ EM BRANCO"
End If
'If textboxfiltro.Text = Null Then
'MsgBox "CAMPO DE PESQUISA PARA AGENDA: DATA ESTÁ EM BRANCO"
'End If
SQL = "SELECT nclinica,NOME,nortondontia,pacientedesde,sexo,data,uf,cidade,tel,cel,formaingresso,pacienteindicou FROM [tabela]"
SQL = SQL & " WHERE [nome] = '" & caixa_nome & "'"
SQL = SQL & " ORDER BY [nome]ASC ;"
Set BANCO = New ADODB.Recordset

BANCO.Open SQL, nConn
i = 1
'banco1.Open sq2, nConn2

'Count = BANCO1.RecordCount
'BANCO1.MoveFirst
'Set DB = OpenDatabase("\CARLOSSETTI-PCCREAL FEETDATABASEREALFEET.MDB")
'Set BANCO = DB.OpenRecordset("AGENDAMENTO")
'BANCO.MoveFirst
Dim OS As Integer
BANCO.MoveFirst

While Not BANCO.EOF
If caixa_nome <> "" And caixa_num_clin <> "" And caixa_num_ortodontia <> "" And caixa_pacientedesde <> "" And caixa_sexo <> "" And caixa_data <> "" And Caixa_UF <> "" And caixa_cidade <> "" And caixa_tel <> "" And caixa_cel <> "" And caixa_formaingresso <> "" And caixa_pacienteindicou <> "" Then
Set LI = ListView1.ListItems.Add(Text:=BANCO("numclinica"))
If BANCO("nome") = caixa_nome Then

If BANCO("numclinica") <> "" Then
OS = BANCO("numclinica")
LI.ListSubItems.Add Text:=OS
End If
If BANCO("numortodontia") <> "" Then

LI.ListSubItems.Add Text:=BANCO("numortodontia")

End If

If BANCO("nome") <> "" Then

LI.ListSubItems.Add Text:=BANCO("nome")

End If

If BANCO("data") <> "" Then

LI.ListSubItems.Add Text:=BANCO("data")

End If
If BANCO("pacientedesde") <> "" Then

LI.ListSubItems.Add Text:=BANCO("pacientedesde")
Else
LI.ListSubItems.Add Text:="EM BRANCO"
End If
If BANCO("sexo") <> "" Then

LI.ListSubItems.Add Text:=BANCO("sexo")
End If
If BANCO("tel") <> "" Then

LI.ListSubItems.Add Text:=BANCO("tel")
Else
LI.ListSubItems.Add Text:="EM BRANCO"
End If

If BANCO("cel") <> "" Then

LI.ListSubItems.Add Text:=BANCO("cel")

End If
If BANCO("cidade") <> "" Then

LI.ListSubItems.Add Text:=BANCO("cidade")
Else
LI.ListSubItems.Add Text:="00:00"
End If
If BANCO("uf") <> "" Then

LI.ListSubItems.Add Text:=BANCO("uf")
End If

If BANCO("formadeingresso") <> "" Then

LI.ListSubItems.Add Text:=BANCO("formadeingresso")

End If
If BANCO("pacienteindicou") <> "" Then

LI.ListSubItems.Add Text:="R$ " & BANCO("pacienteindicou")

End If

End If

Dim item As ListItem

'Aqui estamos acessando e definindo cada subitem

'Define o formato de visao como Report
ListView1.View = lvwReport

i = i + 1
BANCO.MoveNext

End If
Wend
End Sube]

 
Postado : 17/04/2015 6:26 pm