BUSCAR NA FLEXGRID
Como eu faço uma busca na flex?
Gostaria de digitar em uma txt e aparecer na flex
Gostaria de digitar em uma txt e aparecer na flex
como assim, explique melhor.
Coloca no Form os seguintes Objetos
DATA
FLEXGRID
TEXTBOX
BUTTON
Na Opção do Data1
DataBaseName : O local do seu banco de dados (Access)
DataSource: O nome da tabela
Na opção do MSFlexGrid1
DataSource: Data1
No evento Click do Command1
Coloque este código
Data1.RecordSource = [Ô]Select * from suaTabela where codigo like[Ô] & [Ô][Ô][Ô][Ô] & [Ô]*[Ô] & text1.text & [Ô]*[Ô] & [Ô][Ô][Ô][Ô]
Data1.Refresh
é assim eu seleciono todos o campos da suaTabela e pesquiso pelo campo Codigo (pode ser outro desede que exista na tabela) e pesquiso ele pelo campo Text1.text
DATA
FLEXGRID
TEXTBOX
BUTTON
Na Opção do Data1
DataBaseName : O local do seu banco de dados (Access)
DataSource: O nome da tabela
Na opção do MSFlexGrid1
DataSource: Data1
No evento Click do Command1
Coloque este código
Data1.RecordSource = [Ô]Select * from suaTabela where codigo like[Ô] & [Ô][Ô][Ô][Ô] & [Ô]*[Ô] & text1.text & [Ô]*[Ô] & [Ô][Ô][Ô][Ô]
Data1.Refresh
é assim eu seleciono todos o campos da suaTabela e pesquiso pelo campo Codigo (pode ser outro desede que exista na tabela) e pesquiso ele pelo campo Text1.text
eu uso mshflexgrid da seguinte forma.
suponhamos que vc ja fez tudo (conexao, lista de registro) e agora precisa pesquisa um registro dentro do mshflexgrid .
no evento keypress do mshflexgrid.
Private Sub FlexProdutos_KeyPress(KeyAscii As Integer)
If Trim(FlexProdutos.TextMatrix(1, 1)) = [Ô][Ô] Then
Texto = [Ô][Ô]
Else
If Trim(FlexProdutos.TextMatrix(1, 1)) <> [Ô][Ô] Then
Dim i As Integer
Dim S As String
Dim X As String
Texto = UCase(Texto) & UCase(Chr$(KeyAscii))
If KeyAscii = 8 Then
Texto = [Ô][Ô]
LblTexto.Caption = UCase(Texto)
Else
LblTexto.Caption = UCase(Texto)
End If
S = UCase(Texto)
For i = 1 To FlexProdutos.Rows - 1
X = Trim(FlexProdutos.TextMatrix(i, 1))
X = Left(X, Len(S))
X = UCase(X)
If S = X Then
FlexProdutos.TopRow = i
FlexProdutos.Row = i
Exit For
End If
Next
End If
End If
End Sub
obs. acressente uma label no seu form, e coloque o nome de LblTexto
duvidas poste novamente.
suponhamos que vc ja fez tudo (conexao, lista de registro) e agora precisa pesquisa um registro dentro do mshflexgrid .
no evento keypress do mshflexgrid.
Private Sub FlexProdutos_KeyPress(KeyAscii As Integer)
If Trim(FlexProdutos.TextMatrix(1, 1)) = [Ô][Ô] Then
Texto = [Ô][Ô]
Else
If Trim(FlexProdutos.TextMatrix(1, 1)) <> [Ô][Ô] Then
Dim i As Integer
Dim S As String
Dim X As String
Texto = UCase(Texto) & UCase(Chr$(KeyAscii))
If KeyAscii = 8 Then
Texto = [Ô][Ô]
LblTexto.Caption = UCase(Texto)
Else
LblTexto.Caption = UCase(Texto)
End If
S = UCase(Texto)
For i = 1 To FlexProdutos.Rows - 1
X = Trim(FlexProdutos.TextMatrix(i, 1))
X = Left(X, Len(S))
X = UCase(X)
If S = X Then
FlexProdutos.TopRow = i
FlexProdutos.Row = i
Exit For
End If
Next
End If
End If
End Sub
obs. acressente uma label no seu form, e coloque o nome de LblTexto
duvidas poste novamente.
eu deixo o grid sempre com opçao para receber e filtrar dados, assim..
e no evento change do textbox eu chamo o grid, ele faz o filtro de acordo com o que for digitado, e muito pratico e rapido.. ok
[ô]Formatando o Grid
Sub FormataGrid()
Dim WsHeader As String
With TDBGrid1
.Clear
WsHeader = [Ô]Código |Nome/Razão Social |Contato |Cidade |[Ô]
WsHeader = WsHeader & [Ô]Telefone | | | | | | [Ô]
.FormatString = WsHeader
.ColWidth(2) = 0: .ColWidth(5) = 0: .ColWidth(9) = 0: .ColWidth(8) = 0
.Rows = 1
.FixedRows = 1
.Cols = 10
.SelectionMode = 1
End With
End Sub
[ô]Preenchendo o grid
Sub PreencheGrid()
On Error GoTo ErrorLine
Set Recordset1 = New ADODB.Recordset
StrSql = [Ô]select a.pesscodigo,a.pesscontato,a.pesscat,a.pessnome,b.endcidade,c.contdescricaocontato,d.prodscdreduzido,e.cadcat,e.cadnome,f.idocorr,f.ocorrdescricao [Ô]
StrSql = StrSql & [Ô] from cadpessoas a,cadpessoasendereco b,cadpessoascontato c,produtoseservicosporcliente d,cadcat e,cadocorrencias f [Ô]
StrSql = StrSql & [Ô] where a.pesscodigo=b.pesscodigo and a.pesscodigo=c.pesscodigo and b.endprincipal=1 and c.contprincipal=1[Ô]
StrSql = StrSql & [Ô] and a.pesscodigo=d.prodservcliente and a.pesscat=e.id and d.prodscdreduzido=f.ocorrserial[Ô]
If txtCodigo.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.pesscodigo like [ô]%[Ô] & txtCodigo.Text & [Ô]%[ô][Ô]
If txtNome.Text <> [Ô][Ô] Then StrSql = StrSql & [Ô] and a.pessnome like [ô]%[Ô] & txtNome.Text & [Ô]%[ô][Ô]
StrSql = StrSql & [Ô] group by a.pesscodigo[Ô]
Recordset1.Open StrSql, Conexao, adOpenStatic, adLockReadOnly
Call FormataGrid
If Recordset1.RecordCount > 0 Then
With TDBGrid1
While Not Recordset1.EOF
.AddItem Recordset1!pesscodigo & _
Chr(9) & Recordset1!pessnome & _
Chr(9) & Recordset1!pesscontato & _
Chr(9) & Recordset1!endcidade & _
Chr(9) & Recordset1!contdescricaocontato & _
Chr(9) & Recordset1!pesscat & _
Chr(9) & Recordset1!cadcat & _
Chr(9) & Recordset1!cadnome & _
Chr(9) & Recordset1!idocorr & _
Chr(9) & Recordset1!ocorrdescricao
Recordset1.MoveNext
Wend
.Row = 1: .Col = 0
End With
Recordset1.Close
Set Recordset1 = Nothing
TDBGrid1.Clear: TDBGrid1.Row = 0: TDBGrid1.Col = 0: Call FormataGrid
End If
Exit Sub
ErrorLine:
MsgError
End Sub
e no evento change do textbox eu chamo o grid, ele faz o filtro de acordo com o que for digitado, e muito pratico e rapido.. ok
Tópico encerrado , respostas não são mais permitidas