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

    Copiar vários registros de uma consulta para uma tabela

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    Copiar vários registros de uma consulta para uma tabela Empty Copiar vários registros de uma consulta para uma tabela

    Mensagem  rgondim 16/5/2012, 02:32

    Tentei usar sem sucesso uma consulta acréscimo para inserir vários registros de uma consulta para uma tabela. Ao executar, há um erro, pois dois campos obrigatórios não podem ser adicionados.

    Um destes campos é o Índice (CodLancamentos), que é gerado no formulário antes da inserção de um novo registro através de DMax("CodLancamento", "tblLancamentos") + 1.
    Outro é o campo CodFolha1, que é inserido sempre que um novo registro é criado no subformulário Lancamentos (tblLancamentos).
    Acho que não é possível inserir esses dados pela consulta acréscimo pois na seção "Acrescentar a" só é possível determinar o campo que receberá os dados: não sei se é possível inserir uma função.

    A consulta de origem dos dados é ativada a partir do formulário frmFolhaPagamento e seleciona as verbas da folha de pagamento do mês anterior para transferir para o mês atual. (Assim, o campo CodFolha1 deve ser o atual do formulário).

    Então, tentei fazer isso via DAO.Recordset, e não funcionou:

    Private Sub cmdLancMesAnte_Click()
    Dim db As DAO.Database
    Dim rsOrigem As DAO.Recordset
    Dim rsDestino As DAO.Recordset2
    Set db = CurrentDb()
    Set rsDestino = db.OpenRecordset("qryLancamentos")
    Set rsOrigem = db.OpenRecordset("qryFolhaLancAnte2") >>> ERRO 3219 OPERAÇÃO INVÁLIDA.

    Do While Not rsOrigem.EOF
    rsDestino.AddNew
    rsDestino.Fields("CodLancamento") = Nz(DMax("CodLancamento", "tblLancamentos"), 0) + 1
    rsDestino.Fields("CodFolha1") = Forms!frmfolha!CodFolha
    rsDestino.Fields("CodEvento1") = rsOrigem!CodEvento1
    rsDestino.Fields("RefValor") = rsOrigem!RefValor
    rsDestino.Fields("RefValor2") = rsOrigem!RefValor2
    rsDestino.Fields("Valor") = rsOrigem!Valor
    rsDestino.Update
    rsDestino.MoveNext
    Loop

    Set rsOrigem = Nothing
    Set rsDestino = Nothing
    Set db = Nothing
    End Sub

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Copiar vários registros de uma consulta para uma tabela Empty Re: Copiar vários registros de uma consulta para uma tabela

    Mensagem  criquio 16/5/2012, 03:16

    Coloque o campo do código na tabela de destino como número normal ao invés de autonumeração.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    Copiar vários registros de uma consulta para uma tabela Empty Re: Copiar vários registros de uma consulta para uma tabela

    Mensagem  JPaulo 16/5/2012, 09:02

    Erro absoluto:

    Dim rsDestino As DAO.Recordset2


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Copiar vários registros de uma consulta para uma tabela Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Copiar vários registros de uma consulta para uma tabela Folder_announce_new 102 Códigos VBA Gratuitos...
    Copiar vários registros de uma consulta para uma tabela Folder_announce_new Instruções SQL como utilizar...
    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    Copiar vários registros de uma consulta para uma tabela Empty Re: Copiar vários registros de uma consulta para uma tabela

    Mensagem  rgondim 16/5/2012, 13:05

    Coloque o campo do código na tabela de destino como número normal ao invés de autonumeração.

    Criquio, este campo já é formato número.

    Erro absoluto:
    Dim rsDestino As DAO.Recordset2

    JPaulo,

    deixei apenas DAO.Recordset.

    O erro agora é "Parâmetros insuficientes. Eram esperados . (Erro 3061)"
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    Copiar vários registros de uma consulta para uma tabela Empty Re: Copiar vários registros de uma consulta para uma tabela

    Mensagem  criquio 16/5/2012, 13:39

    Não tinha visto o DAO.Recordset2 Razz

    Me parece que você está aplicando o MoveLast no Recordset errado, não?

    Outra, o recordset de origem não deveria ser filtrado para pegar o(s) registro(s) correto(s)? Ou a ideia é mesmo copiar toda a tabela?


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    rgondim
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 229
    Registrado : 24/02/2012

    Copiar vários registros de uma consulta para uma tabela Empty Re: Copiar vários registros de uma consulta para uma tabela

    Mensagem  rgondim 17/5/2012, 15:19

    > MoveNext estava no Recordset errado. Corrigi!
    > DAO.Recordset2 também corrigido!
    > Inclui 02 critérios em rsOrigem e funcionou!

    Set rsOrigem = db.OpenRecordset("SELECT * FROM qryFolhaLancAnte1 WHERE Competencia >" & _
    Forms!frmFolha!Competencia & "AND CodTrabalhador =" & Forms!frmFolha!CodTrabalhador)


    Mas há um problema: todos os registros com data anterior são adicionados, sem excessão. Preciso apenas dos lançamentos do último registro.

    Conseguir filtra apenas o último registro criando duas consultas estabelecendo. Quando o fomrulário frmFolha está aberto, a consulta "qryLancamentosAnteriores1" filtra os registros do trabalhador com a folha aberta e com data anterior. Para mostrar apenas o último, tive que criar uma segunda consulta ("qryLancamentosAnteriores2"). Ela é baseada em na consulta "qryLancamentosAnteriores1" e aplica um DMax no campo Competencia(data). Se eu executar a consulta funciona!

    No Recordset caso eu coloque apenas "qryLancamentosAnteriores2" (sem escrever os critérios), dá o erro Parâmetros Inválidos... (já entendi, então, que existe uma diferença entre executar a consulta e acessá-la através de OpenRecordset).

    Eu tentei os três critérios em rsOrigem através SELECT...FROM...WHERE. Não funciona, nenhum registro é acessado para copiar.

    A questão é: para conseguir os resultados desejados com a consulta, precisei criar duas - "qryFolhaLancAnte1" e "qryFolhaLancAnte2" - com 03 critérios.

    Não tenho ideia de como resolver isso.

    Conteúdo patrocinado


    Copiar vários registros de uma consulta para uma tabela Empty Re: Copiar vários registros de uma consulta para uma tabela

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 17:46