none
chamar um form passando dados para um datagrid RRS feed

  • Pergunta

  • bom dia.

    Tenho um form em VB6 que seleciona a data inicial e final, tipo de estoque e o produto. Nesse form tenho um botão imprimir e gostaria que ao clicar nesse botão fosse chamado um outro form e exibisse os dados em um grid.

    A consulta ao banco está pronta e minha dúvida é apenas como chamo outro form e passo os dados para o datagrid desse novo form.

    Obrigado.


    • Editado Paulo Romeiro terça-feira, 4 de fevereiro de 2014 11:27
    terça-feira, 4 de fevereiro de 2014 11:20

Todas as Respostas

  • Olha Paulo, é o seguinte - essa grid não pode ser Private, senão o Form "Filho" não vai conseguir ser acessado pelo Form "Pai" para passar os Dados.

    Agora, como você postou a pergunta sem código fica difícil colocar alguma coisa que se encaixe no seu projeto. Basicamente o que você vai fazer é colocar a consulta numa variável, instanciar no novo Form (com a grid Public) - associar o DataSource da grid a variável, e matar o Form Pai.

    Outra forma de fazer isso é criar uma Structure (eu prefiro assim, mas você pode criar as variáveis avulsas no Form Filho), colocar os parâmetros selecionados no Form Pai nessa Structure (que tem Data Inicial, Final, Tipo de Estoque e Produto) e colocar uma variável (ou propriedade - seja qual for, Public) no Form Filho do tipo da Structure, instanciar o Form Filho, passar a Structure para a variável no Form Filho, definir o evento Load do Form Filho para Realizar a query com os atributos da Structure e preencher a si mesmo, e então matar o Form Pai.

    Quando matar o Form Pai, antes de o Show() no Form Filho.

    A teoria é essa, passe a forma com que você faz a query, o Click do Botão que você dispara para chamar o Form filho, ou o código do seu Form para que possa escrever algo de exemplo para você trabalhar.

    Espero sua resposta.

    terça-feira, 4 de fevereiro de 2014 18:47
  • Esse é um sistema bem antigo que temos aqui na empresa e que está bastante complicado de entender.

    Preciso de um relatório e através de um datareport ou pelo Crystal Reports não será possível. Então decidi fazer uma tela para o usuário com um botão imprimir.

    esse código que vou te enviar já existia e a imagem do form tbm. O que eu quero fazer é algo parecido com a segunda imagem, onde o usuário insere os dados e intervalos no primeiro form, esse chama o segundo form e a movimentação do produto aparece em um datagrid. Daí ele clica em um botão imprimir.

    Dim rsEstoque As ADODB.Recordset
    Dim rsProduto As ADODB.Recordset
    Dim vsSql As String
    Dim CodEstoque As String
    Dim rpt As String
    Dim SQL As String
    Dim SQL2 As String
    Dim DataFinal As Date
    Dim DataInicio As Date
    
          
    Private Sub cmdPrint_Click()
        If txtAnoInicio.Text = "" Then
            MsgBox "O Campo 'Ano' no Periodo Inicial está vazio", vbExclamation
            txtAnoInicio.SetFocus
            Exit Sub
        End If
        
        If txtAnoInicio.Text < 2006 Then
            MsgBox "O Campo 'Ano' no Periodo Inicial não pode ser menor que 2006", vbExclamation
            txtAnoInicio.SetFocus
            Exit Sub
        End If
        
        If frmMovimento.txtAnoFinal.Text = "" Then
            MsgBox "O Campo 'Ano' no Periodo Final está vazio", vbExclamation
            txtAnoFinal.SetFocus
            Exit Sub
        End If
        
          If txtAnoFinal.Text < 2006 Then
            MsgBox "O Campo 'Ano' no Periodo Final não pode ser menor que 2006", vbExclamation
            txtAnoFinal.SetFocus
            Exit Sub
        End If
            
        If txtAnoInicio.Text > txtAnoFinal.Text Then
            MsgBox "O Campo 'Ano' no Periodo Inicial não pode ser maior que o Campo 'Ano' do Periodo Final", vbExclamation
            Exit Sub
        End If
        
    
        If txtAnoInicio.Text = txtAnoFinal.Text Then
           If cbMeses.ListIndex > cboMeses1.ListIndex Then
                MsgBox "O Mês no Periodo Inicial não pode ser maior que o Mês do Periodo Final no mesmo Ano", vbExclamation
                Exit Sub
          End If
        End If
            
            
        If frmMovimento.dcEstoque.BoundText = "" Then
            MsgBox "Selecione algum Estoque", vbExclamation
            frmMovimento.dcEstoque.SetFocus
            Exit Sub
        End If
       
        If frmMovimento.dtProdutos.BoundText = "" Then
            MsgBox "Selecione algum Produto", vbExclamation
            frmMovimento.dtProdutos.SetFocus
            Exit Sub
        End If
        
       'Data Inicial
        Dim Index As Integer
        Index = frmMovimento.cbMeses.ListIndex ' pego o valor selecionado do combobox
        Dim ValorcbMeses As String
        
    
        
        'Case para pegar index do Combobox e passar uma string de data
        Select Case Index
            Case 0
             ValorcbMeses = "-01-31 00:00:00"
            Case 1
             ValorcbMeses = "-02-01 00:00:00"
            Case 2
             ValorcbMeses = "-03-01 00:00:00"
            Case 3
            ValorcbMeses = "-04-01 00:00:00"
            Case 4
            ValorcbMeses = "-05-01 00:00:00"
            Case 5
            ValorcbMeses = "-06-01 00:00:00"
            Case 6
            ValorcbMeses = "-07-01 00:00:00"
            Case 7
            ValorcbMeses = "-08-01 00:00:00"
            Case 8
            ValorcbMeses = "-09-01 00:00:00"
            Case 9
            ValorcbMeses = "-10-01 00:00:00"
            Case 10
            ValorcbMeses = "-11-01 00:00:00"
            Case 11
            ValorcbMeses = "-12-01 00:00:00"
       End Select
       
       
       DataInicio = frmMovimento.txtAnoInicio.Text + ValorcbMeses
       
      'Data Final
        Dim Index1 As Integer
        Index1 = frmMovimento.cboMeses1.ListIndex ' pego o valor selecionado do combobox
        Dim ValorcbMeses1 As String
        
         Select Case Index1
            Case 0
             ValorcbMeses1 = "-01-31 00:00:00"
            Case 1
             ValorcbMeses1 = "-02-28 00:00:00"
            Case 2
            ValorcbMeses1 = "-03-31 00:00:00"
            Case 3
            ValorcbMeses1 = "-04-30 00:00:00"
            Case 4
            ValorcbMeses1 = "-05-31 00:00:00"
            Case 5
            ValorcbMeses1 = "-06-01 00:00:00"
            Case 6
            ValorcbMeses1 = "-07-31 00:00:00"
            Case 7
            ValorcbMeses1 = "-08-31 00:00:00"
            Case 8
            ValorcbMeses1 = "-09-30 00:00:00"
            Case 9
            ValorcbMeses1 = "-10-31 00:00:00"
            Case 10
            ValorcbMeses1 = "-11-30 00:00:00"
            Case 11
            ValorcbMeses1 = "-12-31 00:00:00"
       End Select
    
       
       DataFinal = frmMovimento.txtAnoFinal.Text + ValorcbMeses1
    
       'Query SQL
    SQL = " ;WITH CTE AS (SELECT ROW_NUMBER() OVER (ORDER BY X.NF) as ID, X.* FROM " & _
        " (SELECT P.Descricao AS Descricao, ESI.Id_Doc AS NF, ESI.Cod_Estoque AS Cod_Estoque, ESI.Cod_Produto AS Cod_Produto, ESI.Cod_Empresa AS Cod_Empresa, S.Dta_Entrada  AS Data, ESI.Qtde AS Qtde, ESI.V_Unitario AS V_Unitario, ESI.V_Total AS V_Total " & _
        "  FROM dbo.Entrada_Itens AS ESI INNER JOIN dbo.Produtos AS P ON ESI.Cod_Empresa = P.Cod_Empresa AND ESI.Cod_Estoque = P.Cod_Estoque AND ESI.Cod_Produto = P.Cod_Produto INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc " & _
        "   WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND (S.Dta_Entrada Between  '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "') " & _
        "   UNION " & _
        "   SELECT P.Descricao AS Descricao, ESI.Id_Doc AS NF, ESI.Cod_Estoque AS Cod_Estoque, ESI.Cod_Produto AS Cod_Produto, ESI.Cod_Empresa AS Cod_Empresa, S.Dta_Entrada  AS Data, -ESI.Qtde AS Qtde, ESI.V_Unitario AS V_Unitario, -ESI.V_Total AS V_Total " & _
        "   FROM dbo.Saida_Itens AS ESI INNER JOIN dbo.Produtos AS P ON ESI.Cod_Empresa = P.Cod_Empresa AND ESI.Cod_Estoque = P.Cod_Estoque AND ESI.Cod_Produto = P.Cod_Produto INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc " & _
        "   WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND (S.Dta_Entrada Between  '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "') " & _
        "  ) AS X ) " & _
    " SELECT *, (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND (S.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "')) AS V_SE, " & _
              " (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND (S.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "'))*(V_Unitario) AS V_SEV, " & _
              " (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND (S.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "')) AS V_SS, " & _
              " (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND (S.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "'))*(V_Unitario) AS V_SSV, " & _
              " ((SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND  (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "')AND (S.Dta_Entrada < '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "')) - (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND (S.Dta_Entrada < '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "'))) AS V_DQ, " & _
              " ((SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND  (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "')AND (S.Dta_Entrada < '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "')) - (SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND (S.Dta_Entrada < '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "')))*(V_Unitario) AS V_DV, " & _
              " Final_Qtde = (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND  (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "')AND (S.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "')) -(SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND(ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND(S.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "')), " & _
              " (SELECT SUM(ESI.Qtde) FROM Entrada_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "')AND (S.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "'))-(SELECT SUM(ESI.Qtde) FROM Saida_Itens AS ESI INNER JOIN dbo.Saida AS S ON ESI.Cod_Empresa = S.Cod_Empresa AND ESI.Id_Doc = S.Id_Doc WHERE (ESI.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (ESI.Cod_Produto = '" & dtProdutos.BoundText & "') AND (ESI.Cod_Empresa = '" & Sys.Empresa & "') AND (S.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "')) AS Estoque, " & _
              " V_Acum = (SELECT SUM(V_Total) FROM CTE WHERE ID <= C.ID), " & _
              " QtdeEntrada = (SELECT sum (dbo.Entrada_Itens.Qtde) AS Qtde_entrada FROM dbo.Produtos AS P INNER JOIN dbo.Entrada_Itens ON P.Cod_Empresa = dbo.Entrada_Itens.Cod_Empresa AND P.Cod_Estoque = dbo.Entrada_Itens.Cod_Estoque AND P.Cod_Produto = dbo.Entrada_Itens.Cod_Produto INNER JOIN dbo.Entrada ON dbo.Entrada_Itens.Cod_Empresa = dbo.Entrada.Cod_Empresa AND dbo.Entrada_Itens.Id_Doc = dbo.Entrada.Id_Doc WHERE (p.Cod_Empresa = '" & Sys.Empresa & "') AND (P.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (P.Cod_Produto = '" & dtProdutos.BoundText & "') AND (Entrada.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "')), " & _
              " ((SELECT sum (dbo.Entrada_Itens.Qtde) AS Qtde_entrada FROM dbo.Produtos AS P INNER JOIN dbo.Entrada_Itens ON P.Cod_Empresa = dbo.Entrada_Itens.Cod_Empresa AND P.Cod_Estoque = dbo.Entrada_Itens.Cod_Estoque AND P.Cod_Produto = dbo.Entrada_Itens.Cod_Produto INNER JOIN dbo.Entrada ON dbo.Entrada_Itens.Cod_Empresa = dbo.Entrada.Cod_Empresa AND dbo.Entrada_Itens.Id_Doc = dbo.Entrada.Id_Doc WHERE (p.Cod_Empresa = '" & Sys.Empresa & "') AND (P.Cod_Estoque = '" & dcEstoque.BoundText & "') AND (P.Cod_Produto = '" & dtProdutos.BoundText & "') AND (Entrada.Dta_Entrada Between '" & Format(DataInicio, "yyyy-mm-dd 00:00:00") & "' AND '" & Format(DataFinal, "yyyy-mm-dd 00:00:00") & "')) * (V_Unitario)) AS EntVal" & _
              " FROM CTE AS C " & _
              "ORDER BY NF "
               
    Dim MesInicial As String
    Dim mesFinal As String
    Dim Texto As String
    Texto = " a "
    MesInicial = frmMovimento.cbMeses.Text + "/" + frmMovimento.txtAnoInicio.Text
    mesFinal = frmMovimento.cboMeses1.Text + "/" + frmMovimento.txtAnoFinal.Text
    Dim Desc_meses As String
    Desc_meses = MesInicial + Texto + mesFinal
    
    Sys.Desc_Estoque = frmMovimento.dcEstoque.Text
    Sys.Desc_Periodo = Desc_meses
    
    Form1.Show
     
    End Sub
    
    Private Sub cmdSair_Click()
        Unload Me
    End Sub
    
    Private Sub dcEstoque_LostFocus()
        frmMovimento.dtProdutos.BoundText = ""
        LoaddtProtudos
    End Sub
    
    Private Sub Form_Load()
        frmMovimento.txtAnoInicio.Text = Sys.Ano
        frmMovimento.txtAnoFinal.Text = Sys.Ano
        frmMovimento.SpinButton1.Value = Sys.Ano
        frmMovimento.SpinButton2.Value = Sys.Ano
        
        LoadcbMeses1
        LoadCbMeses
        LoaddcEstoque
        
    End Sub
    Private Sub LoaddtProtudos()
        Dim rs As Recordset '--->dá o nome de rs ao recordset
        Dim Caminho As String '--->esta variavel(caminho) vai ser utilizada para definir o caminho da base de dados
        Dim SQL As String '--->esta variavel(sql) serve para utilizar o código em sql no vb
        Dim Cod_Estoque As String
        
       (frmMovimento.cbEstoque.ListIndex)
         Cod_Estoque = dcEstoque.BoundText
        Set rs = New Recordset '--->define rs como um recordset
        '--->Código SQL
        SQL = "SELECT Cod_Empresa, Cod_Estoque, Cod_Produto, PartNumber, Descricao, Cod_Categoria, Cod_Marca, Cod_Tipo, Dta_Atualizado, sta_ativado From Produtos WHERE (Cod_Empresa = '" & Sys.Empresa & "') AND (Cod_Estoque = '" & Cod_Estoque & "') AND (sta_ativado = 1) ORDER BY Descricao"
               
        rs.Open SQL, CN, adOpenStatic, adLockOptimistic '--->Abre o recordset, o caminho,etc...
        dtProdutos.DataField = "Produtos"    ' the bound field in master table
        dtProdutos.BoundColumn = "Cod_Produto"         ' the bound field in detail table
        dtProdutos.ListField = "Descricao"  ' the display field in detail table
        Set dtProdutos.RowSource = rs ' the detail table
       'Set dtProdutos.DataSource = rsOrder   ' the master table
    
    End Sub
    'Preemcher combobox com um recordset
     Private Sub LoadcbProdutos()
        Dim rs As Recordset '--->dá o nome de rs ao recordset
        Dim Caminho As String '--->esta variavel(caminho) vai ser utilizada para definir o caminho da base de dados
        Dim SQL As String '--->esta variavel(sql) serve para utilizar o código em sql no vb
        Dim Cod_Estoque As String
        
        Cod_Estoque = cbEstoque.ItemData(frmMovimento.cbEstoque.ListIndex)
    
        Set rs = New Recordset '--->define rs como um recordset
        '--->Código SQL
        SQL = "SELECT Cod_Empresa, Cod_Estoque, Cod_Produto, PartNumber, Descricao, Cod_Categoria, Cod_Marca, Cod_Tipo, Dta_Atualizado, sta_ativado From Produtos WHERE (Cod_Empresa = '" & Sys.Empresa & "') AND (Cod_Estoque = '0' + '" & Cod_Estoque & "') AND (sta_ativado = 1) ORDER BY Descricao"
             
        Caminho = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & App.Path & "\database.mdb" & ";" '--->Define o caminho da base de dados(esta forma serve para dar acesso à base de dados esteje ela em que directoria estiver)
        
        rs.Open SQL, CN, adOpenStatic, adLockOptimistic '--->Abre o recordset, o caminho,etc...
        While Not rs.EOF '--->enquanto não chegar ao fim do recordset (tradução)
        cbProduto.AddItem rs!descricao '--->Adicionar ao combobox os valores
        cbProduto.ItemData(frmMovimento.cbProduto.NewIndex) = rs!Cod_Produto
        rs.MoveNext '--->mover para o proximo recordset
        Wend '--->fim
    End Sub
    Private Sub LoaddcEstoque()
     Dim rs As Recordset '--->dá o nome de rs ao recordset
        Dim Caminho As String '--->esta variavel(caminho) vai ser utilizada para definir o caminho da base de dados
        Dim SQL As String '--->esta variavel(sql) serve para utilizar o código em sql no vb
        
        
        Set rs = New Recordset '--->define rs como um recordset
        '--->Código SQL
        SQL = "SELECT Cod_Empresa, Cod_Estoque, Descricao FROM Tipo_Estoque WHERE Cod_Empresa = '" & Sys.Empresa & "' ORDER BY Descricao"
    
      
        rs.Open SQL, CN, adOpenStatic, adLockOptimistic '--->Abre o recordset, o caminho,etc...
        dcEstoque.DataField = "Tipo_Estoque"    ' the bound field in master table
        dcEstoque.BoundColumn = "Cod_Estoque"         ' the bound field in detail table
        dcEstoque.ListField = "Descricao"  ' the display field in detail table
        Set dcEstoque.RowSource = rs ' the detail table
    
    End Sub
    
    'Popular ComboBox usando recordset cboMeses
    Private Sub LoadCbMeses()
        Dim rs As Recordset '--->dá o nome de rs ao recordset
        Dim Caminho As String '--->esta variavel(caminho) vai ser utilizada para definir o caminho da base de dados
        Dim SQL As String '--->esta variavel(sql) serve para utilizar o código em sql no vb
        
        
        Set rs = New Recordset '--->define rs como um recordset
        '--->Código SQL
        SQL = "SELECT  Cod_Mes, Nom_Mes, Abreviacao FROM Mes ORDER BY Cod_Mes"
             
        Caminho = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & App.Path & "\database.mdb" & ";" '--->Define o caminho da base de dados(esta forma serve para dar acesso à base de dados esteje ela em que directoria estiver)
        
        rs.Open SQL, CN, adOpenStatic, adLockOptimistic '--->Abre o recordset, o caminho,etc...
        While Not rs.EOF '--->enquanto não chegar ao fim do recordset (tradução)
        cbMeses.AddItem rs!Nom_Mes '--->Adicionar ao combobox os valores
        rs.MoveNext '--->mover para o proximo recordset
        Wend '--->fim
        frmMovimento.cbMeses.ListIndex = 0
        
    End Sub
    
    'Popular ComboBox cboMeses1
    Private Sub LoadcbMeses1()
        Dim rs As Recordset '--->dá o nome de rs ao recordset
        Dim Caminho As String '--->esta variavel(caminho) vai ser utilizada para definir o caminho da base de dados
        Dim SQL As String '--->esta variavel(sql) serve para utilizar o código em sql no vb
        
        
        Set rs = New Recordset '--->define rs como um recordset
        '--->Código SQL
        SQL = "SELECT  Cod_Mes, Nom_Mes, Abreviacao FROM Mes ORDER BY Cod_Mes"
             
        Caminho = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & App.Path & "\database.mdb" & ";" '--->Define o caminho da base de dados(esta forma serve para dar acesso à base de dados esteje ela em que directoria estiver)
        
        rs.Open SQL, CN, adOpenStatic, adLockOptimistic '--->Abre o recordset, o caminho,etc...
        While Not rs.EOF '--->enquanto não chegar ao fim do recordset (tradução)
        cboMeses1.AddItem rs!Nom_Mes '--->Adicionar ao combobox os valores
        rs.MoveNext '--->mover para o proximo recordset
        Wend '--->fim
        frmMovimento.cboMeses1.ListIndex = 0
        
    End Sub
    'Preenchendo combobox sem acesos ao banco de dados
    Private Sub LoadCombos()
          
        frmMovimento.cboMeses1.AddItem "Janeiro"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 1
        
        frmMovimento.cboMeses1.AddItem "Fevereiro"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 2
        
        frmMovimento.cboMeses1.AddItem "Março"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 3
        
        frmMovimento.cboMeses1.AddItem "Abril"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 4
        
        frmMovimento.cboMeses1.AddItem "Maio"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 5
        
        frmMovimento.cboMeses1.AddItem "Junho"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 6
        
            frmMovimento.cboMeses1.AddItem "Julho"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 7
        
        frmMovimento.cboMeses1.AddItem "Agosto"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 8
        
        frmMovimento.cboMeses1.AddItem "Setembro"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 9
        
            frmMovimento.cboMeses1.AddItem "Outubro"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 10
        
        frmMovimento.cboMeses1.AddItem "Novembro"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 11
        
        frmMovimento.cboMeses1.AddItem "Dezembro"
        frmMovimento.cboMeses1.ItemData(frmMovimento.cboMeses1.NewIndex) = 12
     
        
        frmMovimento.cboMeses1.ListIndex = 0
        
    End Sub
    
    Private Sub SpinButton1_Change()
    'Muda os valores  nos textbox refrente ao ano
     frmMovimento.txtAnoInicio = frmMovimento.SpinButton1.Value
    End Sub
    
    Private Sub SpinButton2_Change()
        frmMovimento.txtAnoFinal = frmMovimento.SpinButton2.Value
    End Sub

    Criei o DataEnvironment e passei a QuerySQL que tenho. O Grid é populado porém não com os dados que são colocados pelo usuário que são (DataInicial, DataFinal, Estoque e Produto) pois não consigo associar as informações do primeiro form com a query.

    Não sei se consegui explicar direito mas é mais ou menos isso. Vou tentar fazer algo com o que me passou na mensagem. Se tiver mais alguma dica, agradeço.



    • Editado Paulo Romeiro terça-feira, 4 de fevereiro de 2014 19:35
    terça-feira, 4 de fevereiro de 2014 19:27
  • Então paulo, aonde você faz:

    Sys.Desc_Estoque = frmMovimento.dcEstoque.Text
    Sys.Desc_Periodo = Desc_meses
    
    Form1.Show
     
    End Sub

    Antes do Form1.Show, o FrmMovimento ainda tem controle sobre ele.

    No Form1, escreva uma Sub, com:

    Public Sub AlocarDados(ByRef rs As RecordSet)

    Chame essa Sub antes do Form1.Show - ou coloque o Form1.Show como última linha dentro da Sub - e nela, faça o "Set ....RowSource = rs". Pronto, assim você não precisa declarar nada, nem criar nenhuma Structure.

    Ou então passe os argumentos

    Public Sub AlocarDados(ByRef DateInitial As Date, ByRef DateFinal As Date, ByRef CodEstoque As String, ByRef rsProduto As RecordSet)

    E dentro da Sub, rode a query do SQL e abasteça o grid. Dessa forma quando a Sub acabar você chamará o Form1.Show com tudo prenchido.

    quarta-feira, 5 de fevereiro de 2014 10:52
  • obrigado. vou testar. 

    Uma outra dúvida que tenho é referente a passar o código sql para o VB6 como um comando no DataEnvironment.

    eu passava ele dessa forma que está no código acima para chamar o report e funcionava. Só que agora fazendo através de uma grid devo passa-lo pelo DataEnvironment através de um command, correto? Como ficaria o código sql dentro do Data Environment, pois está dando o erro: "to retrieve field information for this Command. the Command must be executed. You may need to specify input parameter values in the Parameters tab before the command is executed. Execution may add to or modify data in the database" quando passo as propridades do camando.

    A mesma query sem o padrão VB6 e sim SQL  roda normalmente so que eu preciso definir os valores na clausula Where.

    quarta-feira, 5 de fevereiro de 2014 16:01
  • Boa pergunta :)

    Eu tenho programado em VB.net nos últimos anos, e faz tempo que não programo em VB6, por isso não lembro - terei que pesquisar um pouco antes de te responder.

    quinta-feira, 6 de fevereiro de 2014 10:57
  • tenho pesquisado isso a algum tempo e não encontrei uma forma de pegar os dados (Período inicial, Período final e estoque) do form 'Movimentação do produto' e atribuí-los a query que citei acima. Ela (query) resolve oproblema só que não estou conseguindo passar para o VB6.

    Obrigado por ajudar. Se encotrar alguma coisa ou uma fonte de pesquisa nova, ficarei grato.

    quinta-feira, 6 de fevereiro de 2014 12:54
  • Olá Amigos.

    Alguém teria alguma dica para solucionar esse problema?

    Obrigado.

    segunda-feira, 10 de fevereiro de 2014 18:51