BUSCA EM UM MSHFLEXGRID

ROGERCSANTOS 30/12/2013 15:42:55
#432538
Prezados,

Bom dia,

Estou com uma dúvida e gostaria da ajuda de vocês.
Estou realizando uma busca através de um textbox retornando o resultado em uma MSHFlexGrid.
Configurei na MSHFlexGrid a opção editar ao dar um duplo clique em cima da linha, a sim o sistema envia as informações para o formulário para assim o usuário editar.

Porém tenho um problema, quando faço a busca o MSHFLexGrid só aparece as linhas que contem a condição que eu digitei e com isso os valores não retornam corretamente para os campos do formulário.

o código da da flex é:

If msfrprocbanco.Col <> 1 Then
msfrprocbanco.Col = 1
End If

frmcadbanco.txtcodigo.Text = msfrprocbanco.Text [ô]Transferir dados para tela de Cadastros
msfrprocbanco.Col = msfrprocbanco.Col + 1

frmcadbanco.txtcodbanco.Text = msfrprocbanco.Text [ô]Transferir dados para tela de Cadastros
msfrprocbanco.Col = msfrprocbanco.Col + 1

frmcadbanco.txtabrbanco.Text = msfrprocbanco.Text [ô]Transferir dados para tela de Cadastros
msfrprocbanco.Col = msfrprocbanco.Col + 1

frmcadbanco.txtnomebanco.Text = msfrprocbanco.Text [ô]Transferir dados para tela de Cadastros

Unload Me

Poderiam me auxiliar neste problema?

Detalhe: quando eu abro o formulário de consulta o Flex vem preenchida com todas as informações do banco. Neste momento se eu der um duplo click em cima da linha os campos retornam para o formulário corretamente.
OMAR2011 30/12/2013 17:58:23
#432542
Resposta escolhida
Coloque sua consulta de como esta fazendo, ai o pessoal vai lhe dar
uma resposta.
Valeu.
ROGERCSANTOS 31/12/2013 08:12:52
#432553
Bom dia,

Estou fazendo a consulta na opção change do textbox, conforme abaixo:

Private Sub txtprocbanco_Change()

Dim CN_ProcBanco As New ADODB.Connection
Dim rsSelecaoBancoProcBanco As New ADODB.Recordset
Dim cnnComandoBanco_ProcBanco As New ADODB.Command
Dim ResultAbreviatura As String



CN_ProcBanco.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN_ProcBanco.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN_ProcBanco.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN_ProcBanco.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_ProcBanco.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_ProcBanco.Open [ô] Abrindo a conexão

Set rsSelecaoBancoProcBanco = New ADODB.Recordset
Set rsSelecaoBancoProcBanco.ActiveConnection = CN_ProcBanco

ResultAbreviatura = txtprocbanco.Text

If txtprocbanco.Text = [Ô][Ô] Then

msfrprocbanco.Rows = 2

[ô]rsSelecaoBancoProcBanco.Open [Ô]SELECT * FROM BANCO[Ô], CN_ProcBanco, adOpenStatic, adLockOptimistic

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 0) = [Ô][Ô]

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 1) = [Ô][Ô]

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 2) = [Ô][Ô]

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 3) = [Ô][Ô]

msfrprocbanco.Rows = msfrprocbanco.Rows - 1

Me.Caption = [Ô]Buscar Cliente[Ô]

Exit Sub

End If

msfrprocbanco.Rows = 2

rsSelecaoBancoProcBanco.Open [Ô]SELECT * FROM BANCO WHERE ABREVIATURA LIKE [ô][Ô] & txtprocbanco.Text & [Ô]%[ô][Ô], CN_ProcBanco, adOpenStatic, adLockOptimistic

Do While Not rsSelecaoBancoProcBanco.EOF

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 0) = rsSelecaoBancoProcBanco.Fields(0).Value

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 1) = rsSelecaoBancoProcBanco.Fields(1).Value

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 2) = rsSelecaoBancoProcBanco.Fields(2).Value

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 3) = rsSelecaoBancoProcBanco.Fields(3).Value

msfrprocbanco.Rows = msfrprocbanco.Rows + 1

rsSelecaoBancoProcBanco.MoveNext

Loop

msfrprocbanco.Rows = msfrprocbanco.Rows - 1



regContador = CStr(rsSelecaoBancoProcBanco.RecordCount)



If msfrprocbanco.Rows = 2 Then

Me.Caption = [Ô]Buscar Cliente - [Ô] & regContador & [Ô] clientes encontrados[Ô]

Else

Me.Caption = [Ô]Buscar Cliente - [Ô] & regContador & [Ô] clientes encontrados[Ô]

End If

End Sub
OMAR2011 31/12/2013 09:13:16
#432557
rsSelecaoBancoProcBanco.Open [Ô]SELECT * FROM BANCO WHERE ABREVIATURA LIKE [ô][Ô] & txtprocbanco.Text & [Ô]%[ô][Ô], CN_ProcBanco, adOpenStatic, adLockOptimistic

Do While Not rsSelecaoBancoProcBanco.EOF

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 0) = rsSelecaoBancoProcBanco.Fields(0).Value

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 1) = rsSelecaoBancoProcBanco.Fields(1).Value

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 2) = rsSelecaoBancoProcBanco.Fields(2).Value

msfrprocbanco.TextMatrix(msfrprocbanco.Rows - 1, 3) = rsSelecaoBancoProcBanco.Fields(3).Value

[txt-color=#e80000]Text2.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 0)
Text3.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 1)[/txt-color]
msfrprocbanco.Rows = msfrprocbanco.Rows + 1

rsSelecaoBancoProcBanco.MoveNext

Tente assim.
Tem forma mais simples de fazer com menos códigos.
Procure que tu vai achar.
ROGERCSANTOS 02/01/2014 09:05:06
#432584
Bom dia Omar,

Primeiramente feliz ano novo para ti.

Com relação a sua resposta..não intendi muito bem com funciona.

Em meu projeto só tem um textbox responsável pela consulta, sendo ele txtprocbanco

Seguindo sua orientação eu coloquei assim:

txtprocbanco.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 0)

txtprocbanco.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 1)

porem quando eu vou digitar alguma coisa no textbox de pesquisa já aparece a palavra código, acho que está buscando o nome da coluna no banco.

Poderia me auxiliar mais uma vez?

OMAR2011 02/01/2014 12:01:55
#432589
Aproveitei seu código e fiz de forma mais simples.

Private Sub Text1_Change()
Dim CN_ProcBanco As New ADODB.Connection
Dim rsSelecaoBancoProcBanco As New ADODB.Recordset
Dim cnnComandoBanco_ProcBanco As New ADODB.Command
Dim ResultAbreviatura As String

CN_ProcBanco.Provider = [Ô]SQLOLEDB.1[Ô] [ô] Provedor de acesso ao SQL Server
CN_ProcBanco.Properties([Ô]Data Source[Ô]).Value = [Ô]OMAR[Ô] [ô]Nome da Maquina\Instancia onde está instalado o BD
CN_ProcBanco.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]Bras2014[Ô] [ô]Nome do BD
CN_ProcBanco.Properties([Ô]Integrated Security[Ô]).Value = [Ô]SSPI[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_ProcBanco.Properties([Ô]Persist Security Info[Ô]).Value = [Ô]False[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_ProcBanco.Open [ô] Abrindo a conexão
CN_ProcBanco.CursorLocation = adUseClient
Set rsSelecaoBancoProcBanco = New ADODB.Recordset
Set rsSelecaoBancoProcBanco.ActiveConnection = CN_ProcBanco
rsSelecaoBancoProcBanco.Open [Ô]Select * From Usuarios Where NomeUsuario LIKE [ô][Ô] & Text1.Text & [Ô]%[ô] [Ô]
Set msfrprocbanco.DataSource = rsSelecaoBancoProcBanco
Text2.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 1)
Text3.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 2)
rsSelecaoBancoProcBanco.Close
Set rsSelecaoBancoProcBanco = Nothing

End Sub
ROGERCSANTOS 02/01/2014 13:08:01
#432590
Eu não intendi esse Text2.Text e Text3.Text.
O que seria?

No caso do meu projeto só realizo a busca em uma texbox no caso o text1.text.
OMAR2011 02/01/2014 13:54:01
#432591
O que é isto no seu formulário.
frmcadbanco.txtcodigo.Text
frmcadbanco.txtcodbanco.Text
frmcadbanco.txtabrbanco.Text
frmcadbanco.txtnomebanco.Text
Você quer que apareça a sua pesquisa nas caixas de texto.
Então.

frmcadbanco.txtcodigo.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 1)
frmcadbanco.txtcodbanco.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 2)

E assim sucessivamente.

Text2.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 1)
Text3.Text = msfrprocbanco.TextMatrix(msfrprocbanco.Row, 2)
Isto faz parte do meu formulário de teste.
Coloque isto para ver como se faz.

ROGERCSANTOS 02/01/2014 14:05:39
#432592
Funcionou mais do que perfeito Omar.

Muito obrigado mesmo pelo apoio e feliz ano novo para você e sua família.
Tópico encerrado , respostas não são mais permitidas