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

    Colar registro da tabela sequencial em campos fixos

    avatar
    joseantonio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 142
    Registrado : 18/07/2011

    Colar registro da tabela sequencial em campos fixos - Página 2 Empty Re: Colar registro da tabela sequencial em campos fixos

    Mensagem  joseantonio 7/3/2014, 13:16

    É apenas um campo na tabela "tmpfatura" com até 10 lançamentos que será lançado na tbl movim geral igual fez para conta, exemplo: grupo, grupo1, grupo2, grupo3....grupo10, o problema que está ocorrendo é quando o grupo tem nome diferente ele esta quebrando a linha "duplicando", sendo que deveria lançar nos campos: grupo, grupo1, grupo2, grupo3....grupo10.
    avatar
    Convidado
    Convidado


    Colar registro da tabela sequencial em campos fixos - Página 2 Empty Re: Colar registro da tabela sequencial em campos fixos

    Mensagem  Convidado 9/3/2014, 13:10

    Está gerando 5 registro na movim geral.
    aponte-me os erros.. quantos registros deveria gerar? e onde está o erro nos registros gerados?


    Cumprimentos.
    avatar
    Convidado
    Convidado


    Colar registro da tabela sequencial em campos fixos - Página 2 Empty Re: Colar registro da tabela sequencial em campos fixos

    Mensagem  Convidado 9/3/2014, 14:10

    Boas José.. bem vou tentar te explicar o erro..

    Primeiramente eu carrego rsCount com os dados agrupados para cada proposta, ou seja, este recordset teria que exibir a quantidade de registros condizente com a quantidade de proposta... Se 3 propostas, 3 registros.

    Pois bem.. no exemplo que enviou acrescentou descrições de grupox diferentes (11-Evetual e 12-Financeiro)... o que ocorreu é como a consulta do RsCount é agrupada.. a adição de nomes de grupox diferentes fez com que a consulta exibisse mais de um registro para a proposta ID = 1

    O que fiz.. nesta primeira SQL retirei o campo Grupox da SQL assim o rsCount(Recordset baseado na SQL) voltou a exibir apenas 3 registros...



    Private Sub DuplicarConta_Click()
    Dim rs As DAO.Recordset
    Dim rsCount As DAO.Recordset
    Dim yCount As Long
    Dim StrSQL As String, strSQLCount As String
    Dim StrId As Long, StrIDOld As Long
    Dim nCount As Byte
    Dim StrCampo1 As String, StrCampo2 As String, StrCampo3 As String
    Dim dtVenc As Date, dtdata
    Dim X As Long

    '------------------------------------------------------------------------------------------------
    'Carrego nas variáveis a primeira parte do nome as quais serão concatenadas com a variável nCount
    '------------------------------------------------------------------------------------------------
    StrCampo1 = "Conta"
    StrCampo2 = "Valor"
    StrCampo3 = "Grupo"
    '-----------------------------------------------------------------------------
    'Carrego na variável a sql que comporta a contagem dos registros de mesma ID
    '-----------------------------------------------------------------------------
    strSQLCount = "SELECT tmpfatura.Empresa, tmpfatura.idcliente, tmpfatura.venc, tmpfatura.idproposta" _
    & " FROM tmpfatura GROUP BY tmpfatura.Empresa, tmpfatura.idcliente, tmpfatura.venc, tmpfatura.idproposta;"
    '------------------------------------------------------------------------
    'Seto o recordset para abrir a SQL para contagem de registros de mesma ID
    '------------------------------------------------------------------------
    Set rsCount = CurrentDb.OpenRecordset(strSQLCount)
    '-------------------------------------------------------------------
    'movo o ponteiro para o último registro e em seguida para o primeiro
    '-------------------------------------------------------------------
    rsCount.MoveLast: rsCount.MoveFirst
    '----------------------------------------------
    'Carrego na variável a contagem para o registro
    '----------------------------------------------
    yCount = rsCount.RecordCount
    '---------------------------------
    'Executo loop baseado no contador
    '---------------------------------
    Do While Not rsCount.EOF
    StrSQL = "SELECT tmpfatura.grupox, tmpfatura.contax, Sum(tmpfatura.total) AS SomaDetotal, tmpfatura.Empresa, tmpfatura.idcliente, tmpfatura.venc, tmpfatura.idProposta" _
    & " FROM tmpfatura GROUP BY tmpfatura.grupox, tmpfatura.contax, tmpfatura.Empresa, tmpfatura.idcliente, tmpfatura.venc, tmpfatura.venc, tmpfatura.idProposta" _
    & " HAVING (((Sum(tmpfatura.total))<>0)) And tmpfatura.IdProposta = " & rsCount!IdProposta & ";"
    '--------------------------
    'Seto o Recordset com a sql
    '--------------------------
    Set rs = CurrentDb.OpenRecordset(StrSQL)
    '-----------------------------------------------------------------------------------------
    'Seto a variável como 1, esta variável será utilizada na instrução UPDATE ao segundo loop
    'Será utilizada para modificar o nome do Campo a csda loop Valor(nCount), Conta(nCount)
    'Assim se a variável for = 2 os Campos terão seus respectivos nome: Valor2 e Conta2 e
    'assim sucessivamente modificando os nomes a cada loop inserindo os registros
    '-----------------------------------------------------------------------------------------
    nCount = 1
    '-------------------
    'Loop pelo recordset
    '-------------------
    Do While Not rs.EOF
    '---------------------------------------------------------------------------
    'Na primeira volta utiliza os nomes dos campos tal como o são na tabela isto
    'porque os campos não são precedidos de numeração igual
    '---------------------------------------------------------------------------
    dtdata = rs!Venc & "/" & Left(Me.competencia, 2) & "/" & Right(Me.competencia, 4)
    'MsgBox dtdata
    If nCount = 1 Then
    CurrentDb.Execute "INSERT INTO [movim geral] (conta, grupo, valor1, cliente_fornecedor, idclienteforn, Venc) Values" _
    & "(""" & rs!Contax & """,""" & rs!Grupox & """,""" & rs!SomaDetotal & """,""" & rs!Empresa & """,""" & rs!idcliente & """, """ & dtdata & """)"
    '--------------------------------------------------------------------------------
    'Como foi inserido um registro é necessário guardar a ID do mesmo em uma variável
    'isto porque será necessário para atualizar o mesmo apartir do segundo laço
    '--------------------------------------------------------------------------------
    StrId = DMax("ID", "[Movim Geral]")
    'StrIDOld = rs!idpropostad
    ElseIf nCount >= 1 And nCount <= 16 Then
    '--------------------------------------------------------------------------------------
    'Atualiza o registro criando anteriormente filtrado pelo campo ID e pelo critério StrID
    'Aqui utiliza-se a concatenação das variáveis citadas acima para que os nomes
    'dos campos sejam modificados a cada laço
    '--------------------------------------------------------------------------------------
    CurrentDb.Execute "UPDATE [movim geral] Set " & StrCampo1 & "" & nCount & " = '" & rs!Contax & "', " & StrCampo2 & "" & nCount & " = " & rs!SomaDetotal & ", " & StrCampo3 & "" & nCount & " = '" & rs!Grupox & "' WHERE ID = " & StrId & ""
    ElseIf nCount > 16 Then
    nCount = 0
    End If
    '---------------------
    'Incremento a variável
    '---------------------
    nCount = nCount + 1
    '----------------------------
    'Movo para o próximo registro
    '----------------------------
    rs.MoveNext
    '--------------
    'Executa o Loop
    '--------------
    Loop
    rsCount.MoveNext
    Loop
    MsgBox "Pronto"
    End Sub



    Cumprimentos.

    Conteúdo patrocinado


    Colar registro da tabela sequencial em campos fixos - Página 2 Empty Re: Colar registro da tabela sequencial em campos fixos

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 12:39