|
Postada em 03/05/2006 14:09 hs
Olá pessoal, aprendi a gravar os dados do flexgrid em banco de dados,usando loop, agora preciso mostrar todos os registro do banco dentro de um flex grid. Como faço isso? Agradeço pela ajuda recebida...
|
|
|
|
|
|
|
Postada em 03/05/2006 15:17 hs
Junio, to mandando ai abaixo uma rotina que uso para preencher um MsFlexGrid com dados do banco. Consiste em executar o select no banco, determinar a largura de cada coluna e então ir alimentando coluna a coluna até que seja o fim do seu recordset. Espero que sirva... analisa com cuidado, pois parece complicado mas não é! ============================================================= sSQL = "SELECT * FROM tblcabpedidos WHERE NF=" & NumNF & "" Set rsTemp = pcConexao.Execute(sSQL) If rsTemp.EOF Then MsgBox "Nota Fiscal não localizada!", vbCritical, "Sistema Gerencial" txtNF.SetFocus Exit Sub Else NumNF = rsTemp("NF") sSQL = "SELECT tblcabpedidos.CodPedido as 'Código Pedido', tblcabpedidos.CodigoExterno as 'Código Externo'," & _ " tblcabpedidos.Data, tblcabpedidos.ValorTotalPedido as 'Valor Pedido'," & _ " tblcabpedidos.DataSaida as 'Data Saída', tblcabpedidos.NF, tbldetpedido.CodProduto as 'Código Produto'," & _ " tblprodutos.codfabricante as 'CodFabricante', tblprodutos.DescricaoCompleta as 'Descrição', tbldetpedido.IPI, tbldetpedido.ICMS, tbldetpedido.CodDetPedido as 'CódDetPedido', tbldetpedido.Quantidade," & _ " tbldetpedido.Valor, tblcabpedidos.CodFornecedor as 'Código Cliente', tblclientes.Nome as 'Nome Cliente'," & _ " tbldetpedido.Status " & _ " FROM ((tblcabpedidos INNER JOIN tbldetpedido ON tblcabpedidos.CodPedido = tbldetpedido.CodPedido) INNER JOIN tblprodutos ON tbldetpedido.CodProduto = tblprodutos.CodProduto) INNER JOIN tblclientes ON tblcabpedidos.CodFornecedor = tblclientes.CodCliente " & _ " WHERE (((tblcabpedidos.NF)=" & NumNF & ") AND ((tbldetpedido.Status)=0));" Set rsNF = pcConexao.Execute(sSQL) If rsNF.EOF Then MsgBox "Nota Fiscal sem Itens para Devolução! Verifique!", vbCritical, "Sistema Gerencial" MSFlexGrid1.Clear txtCodCliente.Caption = "" txtCodigoExterno.Caption = "" txtCodPedido.Caption = "" txtDataSaida.Caption = "" txtNomeCliente.Caption = "" txtValorTotal.Caption = "" txtDataPedido.Caption = "" txtNF.SetFocus txtNF = "" MSFlexGrid1.Enabled = False Exit Sub Unload Me Else txtCodPedido = rsNF("Código Pedido") & " " txtDataPedido = rsNF("data") & " " txtCodigoExterno = rsNF("Código Externo") & " " txtDataSaida = rsNF("Data Saída") & " " txtCodCliente = rsNF("Código Cliente") & " " txtNomeCliente = " " & rsNF("Nome Cliente") txtValorTotal = Format(rsNF("valor pedido"), "0.00") & " " 'VOU PREENCHER O FLEXGRID Dim X As Integer MSFlexGrid1.FixedCols = 0 'Determinal Quantas Colunas Fixas Vai Ter o Flexgrid MSFlexGrid1.FixedRows = 1 'Determinal Quantas Linhas Fixas Vai Ter o Flexgrid With MSFlexGrid1 'Determina numero de linhas e colunas .Rows = 1 .Cols = 8 'Determina largura das colunas .ColWidth(0) = 740 .ColWidth(1) = 1300 .ColWidth(2) = 3450 .ColWidth(3) = 1000 .ColWidth(4) = 1000 .ColWidth(5) = 1 .ColWidth(6) = 740 .ColWidth(7) = 740 'Coloca Titulo nas colunas .Col = 1 .Text = "Código Produto" .Col = 2 .Text = "Descrição" .Col = 3 .Text = "Quantidade" .Col = 4 .Text = "Valor" .Col = 5 .Text = "Ref.Detalhe" .Col = 6 .Text = "% IPI" .Col = 7 .Text = "% ICMS" 'Popula o FlexGrid While Not rsNF.EOF .Rows = .Rows + 1 .Row = .Rows - 1 X = .Rows - 1 For iCol = 0 To 4 Call ColocaCheck(X, 0, FrmDevolucao) .Col = 1 .Text = rsNF.Fields("CodFabricante") '.Text = rsNF.Fields("Código Produto") .Col = 2 .Text = rsNF.Fields("Descrição") .Col = 3 .Text = rsNF.Fields("Quantidade") .Col = 4 .Text = Format(rsNF.Fields("Valor"), "0.00") .Col = 5 .Text = rsNF.Fields("CódDetPedido") .Col = 6 .Text = rsNF.Fields("IPI") .Col = 7 .Text = rsNF.Fields("ICMS") Next rsNF.MoveNext Wend End With MSFlexGrid1.Enabled = True End If End If Exit Sub erro: MsgBox Err.Number & "-" & Err.Description, vbCritical, "Sistema Gerencial" End Sub
|
|
|
|
Postada em 03/05/2006 15:23 hs
Veja este exemplo somando a coluna valores : Private Sub ClienteU_Click() On Error GoTo Trata_Erro Me.MousePointer = 11 Usuario.Enabled = False Set BancoDeDados = OpenDatabase(App.Path & "salao.MDB", False) Set TBDados = BancoDeDados.OpenRecordset("select Data,Usuario,comentario,sum (valor) from dados Where Data >= #" & Format(DataInicial, "mm/dd/yy") & "# and data<= #" & Format(DataFinal, "mm/dd/yy") & "# and Nome='" & NomeCliente.Text & "'and Usuario='" & Nomeusuario.Text & "' group by Data,Usuario,comentario order by data desc") If Not TBDados.EOF Then With MSFlexGrid1 .Rows = 1 .Cols = 5 .ColWidth(0) = 0 .ColWidth(1) = 1500 .ColWidth(2) = 2500 .ColWidth(3) = 0 .ColWidth(4) = 1500 .MergeCells = flexMergeFree .MergeCol(1) = True .TextMatrix(0, 0) = "" .TextMatrix(0, 1) = "Data" .TextMatrix(0, 2) = "Usuario" .TextMatrix(0, 3) = "" .TextMatrix(0, 4) = "Valor" End With i = 1
Do While Not TBDados.EOF With MSFlexGrid1 .Rows = i + 1 .ColAlignment(0) = flexAlignCenterCenter ' alinha coluna .TextMatrix(i, 0) = i - 0 ' autonumeração colocar zero para poder começar com 1 .ColAlignment(1) = flexAlignCenterCenter .TextMatrix(i, 1) = TBDados(0) .ColAlignment(2) = flexAlignCenterCenter .TextMatrix(i, 2) = TBDados(1) .ColAlignment(3) = flexAlignCenterCenter .TextMatrix(i, 3) = TBDados(2) .ColAlignment(4) = flexAlignRightCenter .TextMatrix(i, 4) = Format(TBDados(3), "Currency") .Col = 4 .Row = i .CellForeColor = vbRed .CellFontBold = True End With i = i + 1 SomaColuna = SomaColuna + TBDados(3) TBDados.MoveNext Loop ' Textbox com o total da coluna Saldo.Text = Format(SomaColuna, "currency") End If FlexCores &HFFFFFF, &HC0FFFF ' este cara deixa o flex zebrado Me.MousePointer = 0 Exit Sub Trata_Erro: MsgBox "Você Selecionou DADOS INVÁLIDOS!!!!" End Sub Função para deixar o flex zebrado : Sub FlexCores(lCorPar As Long, lCorImpar As Long) Dim iLinha As Integer MSFlexGrid1.FillStyle = flexFillRepeat For iLinha = 1 To MSFlexGrid1.Rows - 1 With MSFlexGrid1 .Row = iLinha If EImpar(iLinha) Then 'Se a linha for impar: 'Seleciona a partir da primeira coluna .Col = 1 'Seleciona até a última coluna .ColSel = .Cols - 1 'Aplica a cor .CellBackColor = lCorImpar Else 'Se a linha for par: 'Seleciona a partir da primeira coluna .Col = 1 'Seleciona até a última coluna .ColSel = .Cols - 1 'Aplica a cor .CellBackColor = lCorPar End If End With Next MSFlexGrid1.FillStyle = flexFillSingle End Sub
|
|
|
|
Postada em 03/05/2006 15:43 hs
Vc pode usar tb a propriedade DataSource do seu flexgrid.... Sendo rs o seu recordset para acessar a tabela no banco de dados. 'Exemplo para ADO Set MSHFlexgrid.DataSource = rs qq dúvida é só postar... t+
|
|
|
|
Postada em 04/05/2006 07:28 hs
Olá pessoal, muito obrigado pelas dicas oferecidas, vasleu mesmo e ajudou bastante. Desde já agradeço a todos pela ajuda....
|
|
|
|