PESQUISAR VALORES SGRID

CAETANO 05/04/2007 15:53:04
#210534
Encontrei um código muito interessante que faz a pesquisa de um valor em um grid , no caso o LynxGrid.
Gostaria de adapta-lo para o SGRID.
Quebrei a cabeça , mas não consegui.
No projeto elecoloca uma combo no Main e passa os campos que podem ser pesquisados para a mesma , ele ainda dá a opção de pesquisar em todos os campos:

Public Function Form_Search(ByVal sSearchWhat As String, ByVal sField As String) As Boolean

Dim li As Long
Dim lx As Long
Dim NewSelIndex As Long


'default
NewSelIndex = -1
Form_Search = False

listEntradas.Redraw = False

If listEntradas.RowCount < 1 Then
GoTo RAE
End If

If LCase(sField) = "all fields" Then 'Opção para pesquisar em todo o grid.

'all fields
For lx = 0 To listEntradas.Cols - 1
NewSelIndex = listEntradas.FindItem(sSearchWhat, lx, lgWith, False)
If NewSelIndex >= 0 Then
listEntradas.ItemSelected(NewSelIndex) = True
listEntradas.EnsureVisible NewSelIndex
Exit For
End If
Next

Else

'OPÇÃO POR COLUNA
'by column
For lx = 0 To listEntradas.Cols - 1
If LCase(sField) = LCase(listEntradas.ColHeading(lx)) Then
NewSelIndex = listEntradas.FindItem(sSearchWhat, lx, lgWith, False)
If NewSelIndex >= 0 Then
listEntradas.ItemSelected(NewSelIndex) = True
listEntradas.EnsureVisible NewSelIndex

Exit For
End If

Exit For
End If
Next
End If

RAE:
If listEntradas.SelectedCount > 1 Then
For li = 0 To listEntradas.RowCount - 1
If NewSelIndex <> li Then
listEntradas.ItemSelected(li) = False
End If
Next
End If

listEntradas.Redraw = True
listEntradas.Refresh

'return
If NewSelIndex >= 0 Then
Form_Search = True
End If

End Function


Resumindo:

Quero digitar um valor em uma textbox e se a combo estiver com "Todos os campos" pesuisar em todo o grid.
Se a combo estiver por exemplo com a opção Nome ( imaginando que o grid contem uma coluna com o campo nome ), pesquisar apenas nesta coluna.

Como faço isso ?




USUARIO.EXCLUIDOS 06/04/2007 10:22:40
#210582
Resposta escolhida
Bem, não sei se vai ajudar mas eu vou adoptar o método mais simples, ou seja...
imagina que tens uma Combo Box e nela tens os seguites valores:


[c]Private Sub Preenche_ComboBox()
Combo1.AddItem ("Nome")
Combo1.AddItem ("Morada")
Combo1.AddItem ("Telefone")
Combo1.AddItem ("EMail")
End Sub

[/c]

Depois o que desejas é procurar numa base de dados os valores introduzidos numa textbox


[c]Private Sub cmdOk_Click()
Select Case cmbTabelas.ListIndex
Case 0 'Nome
datDados.RecordSource = "SELECT * FROM ID WHERE Nome LIKE '*" & txtValor & "*';"
datDados.Refresh
Case 1 'Morada
datDados.RecordSource = "SELECT * FROM ID WHERE Morada LIKE '*" & txtValor & "*';"
datDados.Refresh
Case 2 'Telefone
datDados.RecordSource = "SELECT * FROM ID WHERE Telefone LIKE '*" & txtValor & "*';"
datDados.Refresh
Case 3 'EMail
datDados.RecordSource = "SELECT * FROM ID WHERE Email LIKE '*" & txtValor & "*';"
datDados.Refresh
End Select
End Sub

[/c]

Tu querias procurar um valor em todos os campos certo?
No que está ao meu alcance não te posso ajudar nisso, mas não vai ser com SQL que vais conseguir isso
porque SQL pede um campo para um criterio...
Podes quebrar q cabeça, procurar e procurar que receio que não encontres exactamente aquilo que queres a menos que adoptes uma manha qualquer...
Abraços...
Tópico encerrado , respostas não são mais permitidas