MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Somar campo no Recordset

    avatar
    wesleymeim
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    [Resolvido]Somar campo no Recordset Empty [Resolvido]Somar campo no Recordset

    Mensagem  wesleymeim 27/10/2014, 17:03

    Boa tarde!

    Tenho uma consulta em SQL através de VBA que me mostra o resultado de um recodset em 8 campos, um deles é um campo de valores.

    Como faço para somar esse campo em uma caixa de texto no Access através de VBA.

    Alguém poderia me ajudar?


    Obrigado.
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    [Resolvido]Somar campo no Recordset Empty Re: [Resolvido]Somar campo no Recordset

    Mensagem  Marcelo David 27/10/2014, 18:00

    Olá! Somar ao quê?


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Somar campo no Recordset Marcel11
    avatar
    wesleymeim
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    [Resolvido]Somar campo no Recordset Empty Campo

    Mensagem  wesleymeim 27/10/2014, 18:24

    Tenho uma consulta em VBA que retorna para um formulário dados de uma consulta de uma fonte de dados que está em SQL Server 2008.

    Um desses campos retorna valores de nota fiscal.

    O que eu preciso:

    Criei uma caixa de texto no formulário e a ideia é que ela mostre o total desse campo que retorna as informações de valores de notas fiscais.


    No aguardo....


    Valeu....
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    [Resolvido]Somar campo no Recordset Empty Re: [Resolvido]Somar campo no Recordset

    Mensagem  Marcelo David 27/10/2014, 19:25

    Poderia usar na fonte de controle do campo:
    =Soma([NomeDoControle])

    Ou usar um DSUM, dependendo que queira somar.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Somar campo no Recordset Marcel11
    avatar
    wesleymeim
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    [Resolvido]Somar campo no Recordset Empty Somar Recordset

    Mensagem  wesleymeim 28/10/2014, 12:04

    Bom dia!

    Fiz isso, mais o mesmo acusa erro, será que é porque estou buscando os dados do SQL?

    Segue o Código que eu estou usando abaixo.


    Obrigado.

    Código:
    Private Sub bt_visualizar_dados_teste_Click()

    Dim cn As ADODB.Command 'Declarando variável de conexão
    Dim rss As New ADODB.Recordset
    Dim rs_rrdetail As ADODB.Recordset
    Dim sql As String
    Dim cns As New ADODB.Connection
    Set cn = New ADODB.Command 'Variável de conexão recebendo a conexão


    On Error GoTo Tratamento

    DoCmd.OpenForm "frm_carregando_registros"
    Form_frm_carregando_registros.Repaint

        'No bloco abaixo temos o procedimento de conexão e execução da SP
        With cn
            .ActiveConnection = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=11.111.111.19;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DEBRBRG310F27X;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=Base"
            .CommandType = adCmdText
            .CommandText = "" & "datas_view " & "'" & Right(Form_frm_View_notas_fiscais.txt_dtini, 4) & "-" & Mid(Form_frm_View_notas_fiscais.txt_dtini, 4, 2) & "-" & Left(Form_frm_View_notas_fiscais.txt_dtini, 2) & "'" & " , " & "'" & Right(Form_frm_View_notas_fiscais.txt_dtfim, 4) & "-" & Mid(Form_frm_View_notas_fiscais.txt_dtfim, 4, 2) & "-" & Left(Form_frm_View_notas_fiscais.txt_dtfim, 2) & "'" & ""
            .Execute
        End With
     
    cn.ActiveConnection.Close 'Fecha a conexão com o Banco de Dados
     
    Set cn = Nothing

    cns.Provider = "SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=11.111.111.19;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DEBRBRG310F27X;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=Base"
    cns.Open

    Set rss = New ADODB.Recordset
    Set rss.ActiveConnection = cns

    sqls = "select dtemi_nf, numdoc_nf, id_produto, num_pedido, cfop_nf, num_nf, cpagto_nf, id_cliente, id_estab,prliq_nf from teste_datas_nf order by dtemi_nf desc"

    rss.CursorLocation = adUseClient
    rss.Open sqls, cns, adOpenForwardOnly 'adLockPessimistic (Permitir alteração)

    txt_tot_registros = rss.RecordCount


    Set rs_rrdetail = rss
    Set rss = Nothing
    Set cns = Nothing
    Set Me.Recordset = rs_rrdetail



    With rs_rrdetail
        If .BOF And .EOF Then
            MsgBox "Não temos registros para exibição", vbInformation
        Else
            Form_frm_View_notas_fiscais.txt_dtemi_nf.ControlSource = .Fields("dtemi_nf").Name
            Form_frm_View_notas_fiscais.txt_numdocnf.ControlSource = .Fields("numdoc_nf").Name
            Form_frm_View_notas_fiscais.txt_Id_Produto.ControlSource = .Fields("id_produto").Name
            Form_frm_View_notas_fiscais.txt_num_pedido.ControlSource = .Fields("num_pedido").Name
            Form_frm_View_notas_fiscais.txt_cfop_nf.ControlSource = .Fields("cfop_nf").Name
            Form_frm_View_notas_fiscais.txt_num_nf.ControlSource = .Fields("num_nf").Name
            Form_frm_View_notas_fiscais.txt_cpagto_nf.ControlSource = .Fields("cpagto_nf").Name
            Form_frm_View_notas_fiscais.txt_cod_cliente.ControlSource = .Fields("id_cliente").Name
            Form_frm_View_notas_fiscais.txt_id_estab.ControlSource = .Fields("id_estab").Name
            Form_frm_View_notas_fiscais.txt_pr_liq_nf.ControlSource = .Fields("prliq_nf").Name
           

        End If
    End With


    Form_frm_View_notas_fiscais.txt_dtini.SetFocus

    DoCmd.Close acForm, "frm_carregando_registros", acSaveYes

    Exit Sub

    Tratamento:
     
    MsgBox Err.Number & " - " & Err.Description
     
    End Sub
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    [Resolvido]Somar campo no Recordset Empty Re: [Resolvido]Somar campo no Recordset

    Mensagem  Marcelo David 28/10/2014, 13:09

    É um formulário normal ou continuo/folha de dados?

    Não entende o que quer somar ainda... Você quer somar o campo
    valores ao que? Somar a ele mesmo? Então é form continuo?


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Somar campo no Recordset Marcel11
    avatar
    wesleymeim
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    [Resolvido]Somar campo no Recordset Empty Somar campo no Recordset

    Mensagem  wesleymeim 28/10/2014, 13:17

    Estou enviando em anexo o a tela do meu Form.

    Obrigado.
    Anexos
    [Resolvido]Somar campo no Recordset AttachmentTelaForm.docx
    Você não tem permissão para fazer download dos arquivos anexados.
    (48 Kb) Baixado 15 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    [Resolvido]Somar campo no Recordset Empty Re: [Resolvido]Somar campo no Recordset

    Mensagem  Marcelo David 28/10/2014, 13:25

    Mas é um formulário com subformulário ou apenas um formulário contínuo?
    Como é o nome da caixa de texto que pretende somar?
    Como é o nome do campo da tabela que contem os valores que devem serem somados?
    Como é o nome da tabela que contem o campo que irá somar?
    Como é o nome do campo que usa como critério de data inicial e final na tabela?


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Somar campo no Recordset Marcel11
    avatar
    wesleymeim
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    [Resolvido]Somar campo no Recordset Empty Somar campo no Recordset

    Mensagem  wesleymeim 28/10/2014, 13:37

    Mas é um formulário com subformulário ou apenas um formulário contínuo?
    Apenas Formulário contínuo, a parte de cima é o cabeçalho do formulário.

    Como é o nome da caixa de texto que pretende somar?
    txt_tot_faturado

    Como é o nome do campo da tabela que contem os valores que devem serem somados?
    A tabela está no SQL server, eu estou trazendo os dados através do Recordset mas o nome do campo é prliq_nf

    Como é o nome da tabela que contem o campo que irá somar?
    A tabela está no SQL server, o nome dela é teste_datas_nf (na verdade no SQL Server a mesma é uma View

    Como é o nome do campo que usa como critério de data inicial e final na tabela?
    Na View do SQL Server o se chama dtemi_nf e as caixas de texto no access um tem o nome de txt_dtini e o outro o nome de txt_dtfim
    Marcelo David
    Marcelo David
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3873
    Registrado : 21/04/2011

    [Resolvido]Somar campo no Recordset Empty Re: [Resolvido]Somar campo no Recordset

    Mensagem  Marcelo David 28/10/2014, 13:55

    Vamos ao primeiro teste:

    Na fonte do controle do campo txt_tot_faturado:

    =Soma([prliq_nf])


    Segundo teste:

    Na fonte do controle do campo txt_tot_faturado:

    =DSum("prliq_nf";"teste_datas_nf";"dtemi_nf Between [txt_dtini] And [txt_dtfim]")


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Conheça meu canal no Youtube e se inscreva.
    [Resolvido]Somar campo no Recordset Marcel11
    avatar
    wesleymeim
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    [Resolvido]Somar campo no Recordset Empty Somar campo no Recordset

    Mensagem  wesleymeim 28/10/2014, 14:06

    O primeiro teste eu já havia feito e não tinha funcionado.

    O segundo não funcionou.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3880
    Registrado : 04/04/2010

    [Resolvido]Somar campo no Recordset Empty Re: [Resolvido]Somar campo no Recordset

    Mensagem  Avelino Sampaio 28/10/2014, 17:44

    Olá!

    Vc pode somar criando um loop pelo recordset. Algo assim:


    ...
    Dim dblSoma as Double
    ...
    ...
    Set rs_rrdetail = rss
    Set rss = Nothing
    Set cns = Nothing
    Set Me.Recordset = rs_rrdetail

    Do While Not rs_rrdetail.EOF
    dblSoma = dblSoma + rs_rrdetail!prliq_nf
    rs_rrdetail.MoveNext
    loop
    me!txt_tot_faturado = dblSoma
    ...


    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    wesleymeim
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    [Resolvido]Somar campo no Recordset Empty Somar Compo no Recordset

    Mensagem  wesleymeim 28/10/2014, 18:04

    Obrigado Mestre Avelino, funcionou.

    Porém percebi que o mesmo fazer uma varredura em toda a tabela e o processo ficou um pouco mais lento.

    Teria outra forma de fazer para obter o mesmo resultado.

    Exemplo: No excel eu tenho a linha de comando abaixo para agilizar o processo da macro.

    Teria algo assim dentro do Access VBA.

    Application.ScreenUpdating = False


    Agradeço muito a atenção.

    Obrigado
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3880
    Registrado : 04/04/2010

    [Resolvido]Somar campo no Recordset Empty Re: [Resolvido]Somar campo no Recordset

    Mensagem  Avelino Sampaio 28/10/2014, 18:33

    Olá!

    Vc pode testar a técnica de passar todos os registros para variável, utilizando o GetRows().  Não sei se ganhará muito pois leva um tempo também para passar todos os registros para variável.

    Dim varTabela as variant
    Dim k as long, j as long

    k= rs_rrdetail.RecordCount
    varTabela = rs_rrdetail.GetRows(k)

    Crie o loop com o FOR

    For j= 0 to (k-1)
      dblSoma = dblSoma + varTabela(9, j)
    next


    Uma outra opção seria usar o recordsetClone.  Não sei se funcionaria no teu caso.

    set rsClone = me.recordsetClone

    Poderia também abrir um recordset com apenas o campo que será somado e no modo somente leitura

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3880
    Registrado : 04/04/2010

    [Resolvido]Somar campo no Recordset Empty Re: [Resolvido]Somar campo no Recordset

    Mensagem  Avelino Sampaio 28/10/2014, 18:41

    E se poscionar abaixo como fica


    With rs_rrdetail
    If .BOF And .EOF Then
    MsgBox "Não temos registros para exibição", vbInformation
    Else
    Form_frm_View_notas_fiscais.txt_dtemi_nf.ControlSource = .Fields("dtemi_nf").Name
    Form_frm_View_notas_fiscais.txt_numdocnf.ControlSource = .Fields("numdoc_nf").Name
    Form_frm_View_notas_fiscais.txt_Id_Produto.ControlSource = .Fields("id_produto").Name
    Form_frm_View_notas_fiscais.txt_num_pedido.ControlSource = .Fields("num_pedido").Name
    Form_frm_View_notas_fiscais.txt_cfop_nf.ControlSource = .Fields("cfop_nf").Name
    Form_frm_View_notas_fiscais.txt_num_nf.ControlSource = .Fields("num_nf").Name
    Form_frm_View_notas_fiscais.txt_cpagto_nf.ControlSource = .Fields("cpagto_nf").Name
    Form_frm_View_notas_fiscais.txt_cod_cliente.ControlSource = .Fields("id_cliente").Name
    Form_frm_View_notas_fiscais.txt_id_estab.ControlSource = .Fields("id_estab").Name
    Form_frm_View_notas_fiscais.txt_pr_liq_nf.ControlSource = .Fields("prliq_nf").Name


    End If
    End With
    Do While Not rs_rrdetail.EOF
    dblSoma = dblSoma + rs_rrdetail!prliq_nf
    rs_rrdetail.MoveNext
    loop
    me!txt_tot_faturado = dblSoma


    No aguardo


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    wesleymeim
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 47
    Registrado : 20/08/2014

    [Resolvido]Somar campo no Recordset Empty Somar Campo no Recordset

    Mensagem  wesleymeim 28/10/2014, 18:57

    Posicionado embaixo ficou a mesma coisa.

    Conteúdo patrocinado


    [Resolvido]Somar campo no Recordset Empty Re: [Resolvido]Somar campo no Recordset

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 1/5/2024, 23:06