ERRO AO CARREGAR MSFLEXGRID
Boa Tarde.....tenho uma tabela chamada Caixa_LCTO....e estou tentando carregar essa tabela em uma MSFlexGrid...mas da erro...
'Object Variable or With Block Variable not Set"....
alguem poderia me ajudar....ja tentei de todos os jeito e nada...
fiz assim
If TbTeste.State = 1 Then TbTeste.Close
MySQLString = "Select Empresa from CAIXA_LCTO"
TbTeste.Open MySQLString, Cnn, adOpenStatic
If TbTeste.RecordCount <> 0 Then
Set Grid.DataSource = TbTeste
Else
Grid.Clear
End If
o erro ocorre na linha Set Grid.DataSource = TbTeste...
'Object Variable or With Block Variable not Set"....
alguem poderia me ajudar....ja tentei de todos os jeito e nada...
fiz assim
If TbTeste.State = 1 Then TbTeste.Close
MySQLString = "Select Empresa from CAIXA_LCTO"
TbTeste.Open MySQLString, Cnn, adOpenStatic
If TbTeste.RecordCount <> 0 Then
Set Grid.DataSource = TbTeste
Else
Grid.Clear
End If
o erro ocorre na linha Set Grid.DataSource = TbTeste...
Colega, posso estar enganado, mas acho que o FlexGrid só funciona mudar o DataSource com DAO, com ADO vc pode popular por código (código genérico):
Qualquer dúvida poste...flw
With Grid
.Redraw = False
.Rows = TbTeste.RecordCount + 1
.Cols = TbTeste.Fields.Count
.FixedRows = 1
.FixedCols = 0
For i = 0 To TbTeste.Fields.Count - 1
.TextMatrix(0, i) = TbTeste.Fields(i).Name
.ColAlignment(i) = vbLeftJustify
.ColWidth(i) = TbTeste.Fields(i).ActualSize * 200
Next i
For i = 1 To TbTeste.RecordCount
For c = 0 To .Cols - 1
.TextMatrix(i, c) = "" & TbTeste.Fields(c)
Next c
rst.MoveNext
Next i
.Redraw = True
End With
Qualquer dúvida poste...flw
Citação:MATIOLI escreveu:
Colega, posso estar enganado, mas acho que o FlexGrid só funciona mudar o DataSource com DAO, com ADO vc pode popular por código (código genérico):With Grid
.Redraw = False
.Rows = TbTeste.RecordCount + 1
.Cols = TbTeste.Fields.Count
.FixedRows = 1
.FixedCols = 0
For i = 0 To TbTeste.Fields.Count - 1
.TextMatrix(0, i) = TbTeste.Fields(i).Name
.ColAlignment(i) = vbLeftJustify
.ColWidth(i) = TbTeste.Fields(i).ActualSize * 200
Next i
For i = 1 To TbTeste.RecordCount
For c = 0 To .Cols - 1
.TextMatrix(i, c) = [Ãâ€ÂÂ][Ãâ€ÂÂ] & TbTeste.Fields(c)
Next c
rst.MoveNext
Next i
.Redraw = True
End With
Qualquer dúvida poste...flw
entao...Matioli....essa tabela tem 23000 registro...se carregar em um Loop...vai demorar 3 dias pra carregar Grid...
Bom tambem
A rotina que eu uso e assim.
A rotina que eu uso e assim.
Private Sub Configuragrid()
Grid.Clear
Grid.Rows = 2
Grid.Cols = 5
Grid.TextMatrix(0, 1) = "Descricao"
Grid.TextMatrix(0, 2) = "Descricao"
Grid.TextMatrix(0, 3) = "Descricao"
Grid.TextMatrix(0, 4) = "Descricao"
Grid.ColWidth(0) = 0
Grid.ColWidth(1) = 4200
Grid.ColWidth(2) = 1000
Grid.ColWidth(3) = 1800
Grid.ColWidth(4) = 1600
End Sub
Private Sub Carregagrid()
Dim Rs As New ADODB.Recordset
Dim Sql As String
Rs.Open Sql, Cn, adOpenKeyset, adLockReadOnly
If Rs.EOF = False Then
Configuragrid
Do while not rs.eof
if grid.TextMatrix(1,0) <> "" Then
grid.AddItem ""
End If
Linha = grid.Rows -1
Grid.TextMatrix(Linha, 0) = Rs!nomecampo
Grid.TextMatrix(Linha, 1) = Rs!nomecampo
Grid.TextMatrix(Linha, 3) = Rs!nomecampo
Grid.TextMatrix(Linha, 4) = Rs!nomecampo
Grid.TextMatrix(Linha, 5) = Rs!nomecampo
Rs.MoveNext
loop
End If
End Sub
Citação:ROMERO escreveu:
Bom tambem
A rotina que eu uso e assim.Private Sub Configuragrid()
Grid.Clear
Grid.Rows = 2
Grid.Cols = 5
Grid.TextMatrix(0, 1) = [Ãâ€ÂÂ]Descricao[Ãâ€ÂÂ]
Grid.TextMatrix(0, 2) = [Ãâ€ÂÂ]Descricao[Ãâ€ÂÂ]
Grid.TextMatrix(0, 3) = [Ãâ€ÂÂ]Descricao[Ãâ€ÂÂ]
Grid.TextMatrix(0, 4) = [Ãâ€ÂÂ]Descricao[Ãâ€ÂÂ]
Grid.ColWidth(0) = 0
Grid.ColWidth(1) = 4200
Grid.ColWidth(2) = 1000
Grid.ColWidth(3) = 1800
Grid.ColWidth(4) = 1600
End SubPrivate Sub Carregagrid()
Dim Rs As New ADODB.Recordset
Dim Sql As String
Rs.Open Sql, Cn, adOpenKeyset, adLockReadOnly
If Rs.EOF = False Then
Configuragrid
Do while not rs.eof
if grid.TextMatrix(1,0) <> [Ãâ€ÂÂ][Ãâ€ÂÂ] Then
grid.AddItem [Ãâ€ÂÂ][Ãâ€ÂÂ]
End If
Linha = grid.Rows -1
Grid.TextMatrix(Linha, 0) = Rs!nomecampo
Grid.TextMatrix(Linha, 1) = Rs!nomecampo
Grid.TextMatrix(Linha, 3) = Rs!nomecampo
Grid.TextMatrix(Linha, 4) = Rs!nomecampo
Grid.TextMatrix(Linha, 5) = Rs!nomecampo
Rs.MoveNext
loop
End If
End Sub
Romero...ja fiz desse jeito....e demora muito.....com pouco registro..tudo bem....mas essa tabela que eu tenho aki...é f#d@...tem muitos registro....e com Do While, Loop.....vixi....uma eternidade pra carregar a Grid...
Galera valews pela ajuda.....consegui fazer em uma MSHierarchicalFlexGrid....com o código que eu postei aà em cima....ficou bem rápido....pelo menos na base local....quero ver na REDE....mas blz...Falows
Há ta mais vc já tentou a assim
RsSet Grid.DataSource = TbTeste.Source
RsSet Grid.DataSource = TbTeste.Source
ja fiz assim tbm....ae da outro erro "Type Mistach"
Colega, mas 23000 registros é muita coisa pra carregar de uma só vez de qualquer forma, uma opção é vc fazer paginação dos dados ou então exigir uma maior filtragem antes da exibição...
Se quiser pode usar DAO e popular direto, mas acho que não ganhará tanto assim (se ganhar):
flw
Se quiser pode usar DAO e popular direto, mas acho que não ganhará tanto assim (se ganhar):
Dim DaoRst As DAO.RecordSet
Dim Cn as DAO.Connection
Set Cn = OpenDatabase("[caminho do bd]")
MySQLString = "Select Empresa from CAIXA_LCTO"
Set DaoRst = Cn.OpenRecordset(MySQLString)
Set Grid.DataSource = DaoRst
DaoRst.Close
Cn.Close
Set DaoRst = Nothing
Set Cn = Nothing
flw
Tópico encerrado , respostas não são mais permitidas