CARREGA GRID

IRENKO 05/10/2009 09:21:06
#324415
Para Marcelo Treze ou quem puder ajudar.

No exemplo anexo preciso mostrar somente uma coluna no Grid, carreguei os dados mas mostra duas colunas, onde estou errando?

Obs.: DIGITE NO TEXTBOX 1366 DEPOIS BUSQUE.

ASHKATCHUP 05/10/2009 09:45:07
#324417

?Tabela_LM.Fields.Count
2


Isso explica o motivo das duas colunas.
IRENKO 05/10/2009 09:52:51
#324419
E onde eu faço a correção desse codigo para carregar uma coluna?
ASHKATCHUP 05/10/2009 10:19:04
#324420
Nesse projeto, a seguinte SQL traz os dados conforme o textbox


Sql = [Ô]SELECT LM_2,contrato FROM DadosCab WHERE Contrato like [ô]%[Ô] & TxtBusca.Text & [Ô]%[ô] ORDER BY LM_2[Ô]


Dois campos são citados:
-LM_2
-Contrato

Tudo depende de qual você quer mostrar.
MARCELO.TREZE 05/10/2009 10:21:29
#324421
Resposta escolhida
Bom se for sempre carregar uma unica coluna veja o código exuto

Private Sub CarregaLiberados()

Dim Sql As String

Dim contador As Integer
Dim Dado As String
Dim coluna As Integer
Dim linha As Integer
Dim largura_coluna() As Single
Dim largura_campo As Single

Sql = [Ô]SELECT LM_2,contrato FROM DadosCab WHERE Contrato like [ô]%[Ô] & TxtBusca.Text & [Ô]%[ô] ORDER BY LM_2[Ô]

GridLM.Visible = False
Set Tabela_LM = Banco2.Execute(Sql)

With GridLM
.SelectionMode = flexSelectionByRow

[ô].GridLines = flexGridFlat
[ô].HighLight = flexHighlightAlways
[ô].FixedCols = 0
[ô] define o numero de linhas e colunas e cria uma matrix com o total de registros a exibir
.Rows = 0
.Cols = 1

ReDim largura_coluna(0 To Tabela_LM.Fields.Count - 1)

Do While Not Tabela_LM.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = Tabela_LM.Fields([Ô]Lm_2[Ô]).Value
[ô] verifica o tamanho dos campos
largura_campo = TextWidth(Tabela_LM.Fields(coluna).Value)
If largura_coluna(coluna) < largura_campo Then largura_coluna(coluna) = largura_campo

Tabela_LM.MoveNext
Loop
.Visible = True
End With
[ô] define a largura das colunas do grid
For coluna = 0 To GridLM.Cols - 1
GridLM.ColWidth(coluna) = largura_coluna(coluna) + 240
Next coluna
End Sub


IRENKO 05/10/2009 13:29:24
#324454
Marcelo deu certinho o carregamento, porem pintou um problema. No codigo eu uso o .CellAlignment = flexAlignCenterCenter mas se observar digitando para busca o número 1366 depois de carregar o Grid vá para o ultimo registro o mesmo não alinhou. Veja o exemplo anexo e use o mesmo banco. Se vc observar tive q fazer doi FOR next, estaria correto?

MARCELO.TREZE 05/10/2009 13:49:17
#324459
veja agora com esta modificação pra mim está tudo correto.

Private Sub CarregaLiberados()

Dim Sql As String

Dim contador As Integer
Dim Dado As String
Dim coluna As Integer
Dim linha As Integer
Dim largura_coluna() As Single
Dim largura_campo As Single

Sql = [Ô]SELECT LM_2,contrato FROM DadosCab WHERE Contrato like [ô]%[Ô] & TxtBusca.Text & [Ô]%[ô] ORDER BY LM_2[Ô]

GridLM.Visible = False
Set Tabela_LM = Banco2.Execute(Sql)

With GridLM
.SelectionMode = flexSelectionByRow
.Rows = 0
.Cols = 1

ReDim largura_coluna(0 To Tabela_LM.Fields.Count - 1)

Do While Not Tabela_LM.EOF
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = Tabela_LM.Fields([Ô]Lm_2[Ô]).Value
SizeColumns
Tabela_LM.MoveNext
Loop
.Visible = True

End With
With GridLM
Dim lLinha As Long
.ColAlignment(0) = flexAlignCenterCenter
.CellFontBold = True
.CellFontSize = 10
.CellFontName = [Ô]times new roman[Ô]

For lLinha = 1 To .Rows - 1
.Row = lLinha
.CellFontBold = True
.CellFontSize = 10
.CellFontName = [Ô]times new roman[Ô]
Next
End With
End Sub

IRENKO 05/10/2009 15:03:28
#324473
Valeu Marcelo!! Caso resolvido, vou encerrar.
Tópico encerrado , respostas não são mais permitidas