POPULANDO UM MSFLEXGRID
Pessoal, estou com problemas ao popular o msflexgrid. Como podem ver no anexo ele só chama uma coluna, quero preencher as 3. Como proceder? Segue abaixo o meu código
Formatar a grid
Private Sub Formata_Grid()
With flgDados
.Rows = 500
.Cols = 3
.Col = 1
.Row = 0
.Col = 0: .CellAlignment = 3: .Text = [Ô]Código[Ô]
.Col = 1: .CellAlignment = 3: .Text = [Ô]Nome da Entidade[Ô]
.Col = 2: .CellAlignment = 3: .Text = [Ô]Numero do Banco[Ô]
.ColWidth(0) = 1450
.ColWidth(1) = 3486
.ColWidth(2) = 1450
.Row = 1
.Col = 0
End With
End Sub
Código dentro do botão pesquisar
Private Sub Pesquisar_Click()
[ô]define os objetos para o acesso aos dados no Microsoft Access
Dim db As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim lTimer As Long
Screen.MousePointer = vbHourglass
flgDados.Refresh
lTimer = Timer
flgDados.Visible = True
[ô]abre o banco de dados e define o recordset a ser usado
db.Open [Ô]Driver={Mysql ODBC 5.2w Driver}; Server=localhost;port=3306; database=gnbat; user=root; password=1234; option=3;[Ô]
RS.Open [Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly
[ô]RS.MoveFirst
[ô]define o numero de linhas e colunas e configura o grid
Call Formata_Grid
[ô]estamos usando a propriedade Clip e o método GetString para selecionar uma região do grid
flgDados.Clip = RS.GetString(adClipString, -1, Chr(9), Chr(13), vbNullString)
flgDados.Row = 1
flgDados.Visible = True
[ô]libera os objetos
Set RS = Nothing
Set db = Nothing
Screen.MousePointer = vbDefault
MsgBox [Ô]Tempo de execução : [Ô] & Timer - lTimer & [Ô] segs.[Ô] & vbCr & flgDados.Rows - 1 & [Ô] registros[Ô]
End Sub
Desde já muito grato!!
Formatar a grid
Private Sub Formata_Grid()
With flgDados
.Rows = 500
.Cols = 3
.Col = 1
.Row = 0
.Col = 0: .CellAlignment = 3: .Text = [Ô]Código[Ô]
.Col = 1: .CellAlignment = 3: .Text = [Ô]Nome da Entidade[Ô]
.Col = 2: .CellAlignment = 3: .Text = [Ô]Numero do Banco[Ô]
.ColWidth(0) = 1450
.ColWidth(1) = 3486
.ColWidth(2) = 1450
.Row = 1
.Col = 0
End With
End Sub
Código dentro do botão pesquisar
Private Sub Pesquisar_Click()
[ô]define os objetos para o acesso aos dados no Microsoft Access
Dim db As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim lTimer As Long
Screen.MousePointer = vbHourglass
flgDados.Refresh
lTimer = Timer
flgDados.Visible = True
[ô]abre o banco de dados e define o recordset a ser usado
db.Open [Ô]Driver={Mysql ODBC 5.2w Driver}; Server=localhost;port=3306; database=gnbat; user=root; password=1234; option=3;[Ô]
RS.Open [Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly
[ô]RS.MoveFirst
[ô]define o numero de linhas e colunas e configura o grid
Call Formata_Grid
[ô]estamos usando a propriedade Clip e o método GetString para selecionar uma região do grid
flgDados.Clip = RS.GetString(adClipString, -1, Chr(9), Chr(13), vbNullString)
flgDados.Row = 1
flgDados.Visible = True
[ô]libera os objetos
Set RS = Nothing
Set db = Nothing
Screen.MousePointer = vbDefault
MsgBox [Ô]Tempo de execução : [Ô] & Timer - lTimer & [Ô] segs.[Ô] & vbCr & flgDados.Rows - 1 & [Ô] registros[Ô]
End Sub
Desde já muito grato!!
Exibe algum erro?
eu utilizo desta forma, e nunca tive problema!!!
Dim TB As ADODB.Recordset
Set TB = New ADODB.Recordset
TB.Source = [Ô]Select ID as 'Código', NomeCompleto as 'Nome da Entidade', Banco as 'Numero do Banco'[Ô]
TB.Source = TB.Source + [Ô] from tabela_entidades[Ô]
TB.Source = TB.Source + [Ô] order by ID [Ô]
TB.Open , cn, adOpenDynamic, adLockOptimistic
Do Until Not TB.EOF
Exit Sub
TB.NextRecordset
Loop
MSR.DataSourceName = [Ô]Driver={Mysql ODBC 5.2w Driver}; Server=localhost;port=3306; database=gnbat;[Ô]
MSR.UserName = [Ô]root[Ô]
MSR.Password = [Ô]1234[Ô]
MSR.SQL = TB.Source
MSR.Refresh
MSF.ColWidth(0) = 300
MSF.ColWidth(1) = 600 [ô][ô][ô] Código
MSF.ColWidth(2) = 4000 [ô][ô][ô] Nome da Entidade
MSF.ColWidth(3) = 3000 [ô][ô][ô] Numero do Banco
Espero ter ajudado!!!
eu utilizo desta forma, e nunca tive problema!!!
Dim TB As ADODB.Recordset
Set TB = New ADODB.Recordset
TB.Source = [Ô]Select ID as 'Código', NomeCompleto as 'Nome da Entidade', Banco as 'Numero do Banco'[Ô]
TB.Source = TB.Source + [Ô] from tabela_entidades[Ô]
TB.Source = TB.Source + [Ô] order by ID [Ô]
TB.Open , cn, adOpenDynamic, adLockOptimistic
Do Until Not TB.EOF
Exit Sub
TB.NextRecordset
Loop
MSR.DataSourceName = [Ô]Driver={Mysql ODBC 5.2w Driver}; Server=localhost;port=3306; database=gnbat;[Ô]
MSR.UserName = [Ô]root[Ô]
MSR.Password = [Ô]1234[Ô]
MSR.SQL = TB.Source
MSR.Refresh
MSF.ColWidth(0) = 300
MSF.ColWidth(1) = 600 [ô][ô][ô] Código
MSF.ColWidth(2) = 4000 [ô][ô][ô] Nome da Entidade
MSF.ColWidth(3) = 3000 [ô][ô][ô] Numero do Banco
Espero ter ajudado!!!
Dicas simples
Formatar a grid
onde está nome do campo X, comloque o nome correto dos campos e pronto
Formatar a grid
Private Sub Formata_Grid()
With flgDados
.Rows = 1 [ô] coloque apenas uma linha não tem problema
.Cols = 3
.FormatString =[Ô]Código|Nome da Entidade|Numero do Banco[Ô]
.ColWidth(0) = 1450
.ColWidth(1) = 3486
.ColWidth(2) = 1450
End With
End Sub
Private Sub Pesquisar_Click()
[ô]define os objetos para o acesso aos dados no Microsoft Access
Dim db As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim lTimer As Long
Screen.MousePointer = vbHourglass
flgDados.Refresh
lTimer = Timer
flgDados.Visible = True
[ô]define o numero de linhas e colunas e configura o grid
Call Formata_Grid
[ô]abre o banco de dados e define o recordset a ser usado
db.Open [Ô]Driver={Mysql ODBC 5.2w Driver}; Server=localhost;port=3306; database=gnbat; user=root; password=1234; option=3;[Ô]
RS.Open [Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly
Do While Not RS.EOF
With flgDados
.Rows = .Rows + 1
.Textmatrix(.Rows -1, 0) = RS!nome co campo1
Textmatrix(.Rows -1, 1) = RS!nome co campo2
Textmatrix(.Rows -1, 2) = RS!nome co campo3
RS.MoveNext
Loop
End With
[ô]estamos usando a propriedade Clip e o método GetString para selecionar uma região do grid
flgDados.Clip = RS.GetString(adClipString, -1, Chr(9), Chr(13), vbNullString)
flgDados.Row = 1
flgDados.Visible = True
[ô]libera os objetos
Set RS = Nothing
Set db = Nothing
Screen.MousePointer = vbDefault
MsgBox [Ô]Tempo de execução : [Ô] & Timer - lTimer & [Ô] segs.[Ô] & vbCr & flgDados.Rows - 1 & [Ô] registros[Ô]
End Sub
onde está nome do campo X, comloque o nome correto dos campos e pronto
JLAUROSOUZA não ele não exibe nenhum erro, ele popula a minha grid mais ele só popula a coluna código.
MARCELO-TREZE Ele me mostrou o seguinte erro [Ô]Compile error: Loop without Do[Ô]
Sabe o que significa? Como proceder?
Desde já agradeço a ajuda de todos.
MARCELO-TREZE Ele me mostrou o seguinte erro [Ô]Compile error: Loop without Do[Ô]
Sabe o que significa? Como proceder?
Desde já agradeço a ajuda de todos.
Mude esta linha de:
para:
veja se funciona não esqueça dos campos, poste como ficou seu código se der erro novamente
RS.Open [Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly
para:
Set RS = db.Open [Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly
veja se funciona não esqueça dos campos, poste como ficou seu código se der erro novamente
Prezado,
MARCELO-TREZE
A linha [Ô] Set RS = db.Open [Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly [Ô] nem passa na compilção!
Ele dá o seguinte erro [Ô] Compile error: Sintaxe error. [Ô]
Estou sem idéias.
Desde já grato.
MARCELO-TREZE
A linha [Ô] Set RS = db.Open [Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly [Ô] nem passa na compilção!
Ele dá o seguinte erro [Ô] Compile error: Sintaxe error. [Ô]
Estou sem idéias.
Desde já grato.
Amigo, um jeito simples de adicionar os itens ao Grid é assim...
e assim vai, o VBTAB é pra mudar de coluna, você pode colocar quantos campos quiser, fica a seu critério, qualquer duvida posta aÃ.
Do While Not rs.EOF = False
Grid.AddItem rs!Campo1 & VbTab & rs!Campo2 & VbTab & rs!Campo3
rs.MoveNext
Loop
e assim vai, o VBTAB é pra mudar de coluna, você pode colocar quantos campos quiser, fica a seu critério, qualquer duvida posta aÃ.
tente novamente
esqueci dos parenteses
Set RS = db.Open([Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly)
esqueci dos parenteses
ADILSOO estou usando o método Clip e o método GetString juntos para conseguir buscar com mais rapidez da minha base de dados. Já tentei métodos mais simples, eles rodaram porém com muita lentidão.
MARCELO-TREZE obrigado por toda a atenção em cima da minha dúvida, ainda esta dando erro quando eu executo o botão Pesquisar:
[Ô]Compile error: Expected Function or variable.[Ô]
Set RS = db.Open([Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly)
em meu banco de dados eu tenho 6 colunas, aqui estou pedindo para ele me mostrar 3. Será esse o problema, ou não tem nada a ver?
Desde já grato pela ajuda de todos
MARCELO-TREZE obrigado por toda a atenção em cima da minha dúvida, ainda esta dando erro quando eu executo o botão Pesquisar:
[Ô]Compile error: Expected Function or variable.[Ô]
Set RS = db.Open([Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly)
em meu banco de dados eu tenho 6 colunas, aqui estou pedindo para ele me mostrar 3. Será esse o problema, ou não tem nada a ver?
Desde já grato pela ajuda de todos
Passo 1: Coloque os nomes dos campos que você quer exibir (campo1, campo2, campo3) no lugar do (*) e verifique se funciona.
Passo 2: Substitua a FlexGrid (MSFLXGRD.OCX) pela Hierarchical FlexGrid (MSHFLXGD.OCX) pois esta tem as mesmas funções e propriedades da FlexGrid e pode ser vinculada direto ao seu RS. Para isso, remova a flex e adicione a hflex com o mesmo nome (flgDados) para não mudar o código:
Veja como inserir o controle no seu form aqui
E com a conexão aberta é só fazer isso para carregar todos os dados da consulta para para a grid
Veja esse tutorial: VB e MySQL
Passo 2: Substitua a FlexGrid (MSFLXGRD.OCX) pela Hierarchical FlexGrid (MSHFLXGD.OCX) pois esta tem as mesmas funções e propriedades da FlexGrid e pode ser vinculada direto ao seu RS. Para isso, remova a flex e adicione a hflex com o mesmo nome (flgDados) para não mudar o código:
Veja como inserir o controle no seu form aqui
E com a conexão aberta é só fazer isso para carregar todos os dados da consulta para para a grid
RS.Open [Ô]SELECT * FROM tabela_entidades[Ô], db, adOpenStatic, adLockReadOnly
Set flgDados.DataSource = Rs [ô]Só no MsHFlexgrid que é um controle ADO enquanto a MsFlexGrid é um controle DAO
Formata_Grid()
Veja esse tutorial: VB e MySQL
vamos lá colega vou alterar toda a sub
Private Sub Pesquisar_Click()
[ô]define os objetos para o acesso aos dados no Microsoft Access
Dim db As New ADODB.Connection
Dim RS As Recordset
Dim lTimer As Long
Screen.MousePointer = vbHourglass
flgDados.Refresh
lTimer = Timer
flgDados.Redraw = False
[ô]define o numero de linhas e colunas e configura o grid
Call Formata_Grid
[ô]abre o banco de dados e define o recordset a ser usado
db.Open [Ô]Driver={Mysql ODBC 5.2w Driver}; Server=localhost;port=3306; database=gnbat; user=root; password=1234; option=3;[Ô]
Set RS = db.Exceute([Ô]SELECT * FROM tabela_entidades[Ô])
Do While Not RS.EOF
With flgDados
.Rows = .Rows + 1
.Textmatrix(.Rows -1, 0) = RS!nome do campo1
Textmatrix(.Rows -1, 1) = RS!nome do campo2
Textmatrix(.Rows -1, 2) = RS!nome do campo3
RS.MoveNext
End With
Loop
[ô]estamos usando a propriedade Clip e o método GetString para selecionar uma região do grid
flgDados.Clip = RS.GetString(adClipString, -1, Chr(9), Chr(13), vbNullString)
flgDados.Row = 1
flgDados.Redraw = True
[ô]libera os objetos
Set RS = Nothing
Set db = Nothing
Screen.MousePointer = vbDefault
MsgBox [Ô]Tempo de execução : [Ô] & Timer - lTimer & [Ô] segs.[Ô] & vbCr & flgDados.Rows - 1 & [Ô] registros[Ô]
End Sub
Tópico encerrado , respostas não são mais permitidas