DUVIDA EM UTILIZAR UM DATAGRID COM FILTRO

GESSINGER 08/10/2009 10:23:02
#324792
preciso de um exemplo onde tenha uma form e nesse form um Data grid, txtFiltro onde sera digitado cod_aluno
e aparecera no grid somente esse aluno, ao clicar nessa linha da Grid gravar numa tabela temporaria,
o banco ta ai...Obrigado
GESSINGER 09/10/2009 10:24:20
#324875
lguem pode me ajudar
RODRIGOFERRO 09/10/2009 11:18:11
#324881
Resposta escolhida
Amigo, nao posso fazer por voce mas posso te dar um exemplo

Private Sub Filtrar_Registro()

[ô]Onde rcdCliente é um Recordset
With rcdCliente_Lista

strInstrucaoSQL = [Ô]SELECT ger_Pessoa.pes_Codigo, [Ô] & vbCrLf & _
[Ô]ger_Pessoa.pes_Nome [Ô] & vbCrLf & _
[Ô]ger_Logradouro.log_Tipo [Ô] & vbCrLf & _
[Ô]ger_Logradouro.log_Nome [Ô] & vbCrLf & _
[Ô]ger_Pessoa.pes_Numero [Ô] & vbCrLf & _
[Ô]ger_Bairro.bai_Nome [Ô] & vbCrLf & _
[Ô]ger_Cidade.cid_Nome [Ô] & vbCrLf & _
[Ô]ger_Pessoa.pes_Situacao [Ô] & vbCrLf & _
[Ô]iif(pes_Situacao = 0, [ô]Em Aberto[ô], iif(pes_Tipo = 1, [ô]Fechado[ô])) As Situacao [Ô] & vbCrLf & _
[Ô]FROM ger_Logradouro INNER JOIN [Ô] & vbCrLf & _
[Ô](ger_Cidade INNER JOIN (ger_Bairro RIGHT JOIN ger_Pessoa ON ger_Bairro.bai_Codigo = [Ô] & vbCrLf & _
[Ô]ger_Pessoa.pes_bai_Codigo) [Ô] & vbCrLf & _
[Ô]ON ger_Cidade.cid_Codigo = ger_Pessoa.pes_cid_Codigo) [Ô] & vbCrLf & _
[Ô]ON ger_Logradouro.log_Codigo = ger_Pessoa.pes_log_Codigo [Ô] & vbCrLf & _
[Ô]WHERE ((ger_Pessoa.pes_Codigo)<= 961) AND ((ger_Pessoa.pes_Situacao)< 2)[Ô] & _
[Ô]ORDER BY ger_Pessoa.pes_Codigo; [Ô]

If Not .State = 0 Then .Close
.Open strInstrucaoSQL
strInstrucaoSQL = [Ô][Ô]

End With

[ô]Limpo o listView
list.ListItems.Clear

[ô]Comeco os Filtros
Do While Not rcdCliente_Lista.EOF
[ô]Primeiro Filtro = cboPaciente.Text e ele filtrará esse campo do Recordset = rcdCliente_Lista!pes_Nome
[ô]O Padrao para todos é o mesmo
If Mid(StrConv(cboPaciente.Text, vbUpperCase), 1, Len(cboPaciente.Text)) = Mid(StrConv(rcdCliente_Lista!pes_Nome, vbUpperCase), 1, Len(cboPaciente.Text)) Then
If Mid(StrConv(cboCidade.Text, vbUpperCase), 1, Len(cboCidade.Text)) = Mid(StrConv(rcdCliente_Lista!cid_Nome, vbUpperCase), 1, Len(cboCidade.Text)) Then
If Mid(StrConv(cboLogradouro.Text, vbUpperCase), 1, Len(cboLogradouro.Text)) = Mid(StrConv(rcdCliente_Lista!log_Nome, vbUpperCase), 1, Len(cboLogradouro.Text)) Then
If Mid(StrConv(cboBairro.Text, vbUpperCase), 1, Len(cboBairro.Text)) = Mid(StrConv(rcdCliente_Lista!bai_Nome, vbUpperCase), 1, Len(cboBairro.Text)) Then
If Mid(StrConv(cboFiltroSituacao.Text, vbUpperCase), 1, Len(cboFiltroSituacao.Text)) = Mid(StrConv(rcdCliente_Lista!Situacao, vbUpperCase), 1, Len(cboFiltroSituacao.Text)) Then

Set lst = list.ListItems.add
[ô]Comeco a Adicionar no ListView
[ô]Enquanto Houver Registros ele adiciona
With lst
.Text = rcdCliente_Lista!pes_Codigo
.SubItems(1) = rcdCliente_Lista!pes_Nome
.SubItems(2) = rcdCliente_Lista!log_Tipo & [Ô]: [Ô] & rcdCliente_Lista!log_Nome & [Ô] - Nr°: [Ô] & rcdCliente_Lista!pes_Numero
.SubItems(3) = rcdCliente_Lista!bai_Nome
.SubItems(4) = rcdCliente_Lista!cid_Nome
.SubItems(5) = rcdCliente_Lista!Situacao
End With

End If
End If
End If
End If
End If
[ô]Loop para o proximo Registro
rcdCliente_Lista.MoveNext
Loop


End Sub


Podes ver no comeco que abro um Recordset
Depois eu passo os filtros ao recordset

If Mid(StrConv(cboPaciente.Text, vbUpperCase), 1, Len(cboPaciente.Text)) = Mid(StrConv(rcdCliente_Lista!pes_Nome, vbUpperCase), 1, Len(cboPaciente.Text)) Then
onde cboPaciente.text e o meu controle datacombo...

dai eu coloco o evento do KeyPress do Combo, quando eu digitar ele ira filtrar e preencher o grid
No exemplo é um ListView

Pra gravar numa tabela temporaria so pegar os dados jogar num recordset e executar


Abracos
GESSINGER 11/10/2009 12:14:27
#325019
Obrigado pela ajuda , so que eu preciso pra Datagrid...
alguem sabe
RODRIGOFERRO 16/10/2009 12:36:15
#325469
ue mas o exemplo de filtrar e padrao, voce vai usar esse ai mesmo, postei isso considerando que voce ja tinha o Datagrid Preenchido
Tópico encerrado , respostas não são mais permitidas