ERRO AO CARREGAR MSFLEXGRID

F001E 04/12/2006 18:18:06
#187941
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...
USUARIO.EXCLUIDOS 04/12/2006 18:25:32
#187942
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
F001E 04/12/2006 18:30:45
#187946
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...
USUARIO.EXCLUIDOS 04/12/2006 18:32:56
#187947
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 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

F001E 04/12/2006 18:39:23
#187950
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 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



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...
F001E 04/12/2006 18:44:30
#187953
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
USUARIO.EXCLUIDOS 04/12/2006 18:46:24
#187954
Há ta mais vc já tentou a assim
RsSet Grid.DataSource = TbTeste.Source

F001E 04/12/2006 18:50:30
#187955
ja fiz assim tbm....ae da outro erro "Type Mistach"
USUARIO.EXCLUIDOS 04/12/2006 19:02:56
#187961
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):
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