MaximoAccess

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

Obrigado

Administração do MaximoAccess

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


    [Resolvido]Insert entre duas tabelas.

    Leo19
    Leo19
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 16/12/2011

    [Resolvido]Insert entre duas tabelas. Empty Insert entre duas tabelas.

    Mensagem  Leo19 em 20/3/2012, 16:12

    Amigos,

    tenho uma BD em acess em que preciso de montar a seguinte coisa, hoje tenho apenas um tabela mas preciso ter mais uma, ou seja, a partir de agora o BD com duas tabelas preciso que ocorra o seguite cenário.

    Todos os dia a tabela 1 recebe dados, porem antes de receber do dia atual ela apagar todos os dados nela contidos.A tabela 2 servira como tabela para acumulo dos dados da tabela 1, ou seja, preciso incluir os dados que sao diferentes da tabela 1.Tentei alguns comandos, porem sem sucesso.

    Ate aqui funciona, porem preciso aqui referenciar o Insert.
    tabela = "PD4"
    DoCmd.SetWarnings False 'desliga os avisos do sistema
    DoCmd.RunSQL ("DELETE * FROM [" & tabela & "] WHERE (([Mes]) like #" & dataref & "# ) and (([Razão])=""" & contacontabil & """);") 'Deleta os dados anteriores

    DoCmd.OpenTable (tabela) 'abre a tabela pra colar
    DoCmd.RunCommand acCmdPasteAppend 'Pastes in the worksheet data
    DoCmd.Close 'fecha a tabela
    DoCmd.RunSQL ("UPDATE [" & tabela & "] SET Mes = #" & dataref & "# WHERE (([Mes]) Is Null) and (([Razão])=""" & contacontabil & """);")
    DoCmd.RunSQL ("UPDATE [" & tabela & "] SET [CHAVE_RECONCILIACAO] = [Chave referência] WHERE (([Mes]) like #" & dataref & "# ) and (([Razão])=""" & contacontabil & """);")
    DoCmd.RunSQL ("UPDATE [" & tabela & "] SET [CHAVE_RECONCILIACAO] = Trim(Left([CHAVE_RECONCILIACAO],InStr(1,[CHAVE_RECONCILIACAO],"" -"")-1)) WHERE (([CHAVE_RECONCILIACAO] like ""* -*"") and ([Mes]) like #" & dataref & "# ) and (([Razão])=""" & contacontabil & """);")
    DoCmd.RunSQL ("UPDATE [" & tabela & "] SET [CHAVE_RECONCILIACAO] = Trim(Left([CHAVE_RECONCILIACAO],InStr(1,[CHAVE_RECONCILIACAO],""-"")-1)) WHERE (([CHAVE_RECONCILIACAO] like ""*-*"") and ([Mes]) like #" & dataref & "# ) and (([Razão])=""" & contacontabil & """);")
    DoCmd.RunSQL ("UPDATE [" & tabela & "] LEFT JOIN [carimbo] ON [" & tabela & "].[Texto] = [carimbo].[texto] SET [" & tabela & "].[CARIMBO] = [carimbo].[carimbo] WHERE (([Mes]) like #" & dataref & "# ) and (([Razão])=""" & contacontabil & """);")

    alguem pode me ajudar.
    avatar
    Convidad
    Convidado

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  Convidad em 20/3/2012, 22:54


    Olá!

    Não dominei a ideia ...
    Quer transferir os dados da tabela1 para a tabela2 e depois excluí-los da tabela1 ?
    E isto diariamente ?
    Mas parece que está excluindo antes de transferir... e usando um critério de Mês ao invés de Dia...
    E o UPDATE não deveria ser um INSERT ?

    Leo19
    Leo19
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 16/12/2011

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  Leo19 em 21/3/2012, 00:36

    Norbs,

    exatamente essa a ideia, os valores sao diarios e devem ir da tabela 1(temporaria) para a tabela 2(fixa).Os comando que enviei é ja funcionam, eu preciso incluir neste bloco o insert, fiz um insert into com select distinct, mas os valores retornados nao me atenderam...

    att
    avatar
    Convidad
    Convidado

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  Convidad em 21/3/2012, 01:47

    avatar
    Convidad
    Convidado

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  Convidad em 21/3/2012, 11:11

    com uma simples linha de código antes do delete

    Dim strSQL2 As String

    strSQL2 = "INSERT INTO SuaTabela SELECT * FROM [" & tabela & "] WHERE (([Mes]) like #" & dataref & "# ) and (([Razão])=""" & contacontabil & """"
    DoCmd.RunSQL (strSQL2)

    uma questão:

    isto [" & tabela & "] funciona bem ?
    esta pergunta prende-se devido a essa instrução ser texto e não estar dentro de aspas simples.



    Leo19
    Leo19
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 16/12/2011

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  Leo19 em 21/3/2012, 14:56

    Ricardo, na verdade eu preciso que seja passar da tabela 1 o que nao tiver na 2, um select Distinct.Mas ao executar o comando os valores duplicam, dai minha necessidade.

    Quanto a sua pergunta, funciona sim basta instaciar e depois fazer referencia. eu fiz o seguinte:

    tabela = "PD4"

    depois

    DoCmd.RunSQL ("UPDATE [" & tabela & "] SET Mes = #" & dataref & "# WHERE (([Mes]) Is Null) and (([Razão])=""" & contacontabil & """);")

    abç
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  JPaulo em 21/3/2012, 15:15

    Em tempos ajudei aqui mesmo, a inserir dados de uma tabela para outra se não existir;

    Tente adaptar;


    CurrentDb.Execute "INSERT INTO Tabela2 (Campo1, Campo2, Campo3)" _
    & " SELECT Campo1, Campo2, Campo3" _
    & " From Tabela1" _
    & " WHERE (Campo1 NOT IN" _
    & " (SELECT Campo1" _
    & " FROM Tabela2) AND Campo2 NOT IN" _
    & " (SELECT Campo2" _
    & " FROM Tabela2) AND Campo3 NOT IN" _
    & " (SELECT Campo3" _
    & " FROM Tabela2))"


    .................................................................................
    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

    [Resolvido]Insert entre duas tabelas. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Insert entre duas tabelas. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Insert entre duas tabelas. Folder_announce_new Instruções SQL como utilizar...
    avatar
    hamiltonfviana
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 27/03/2012

    [Resolvido]Insert entre duas tabelas. Empty Insert Into

    Mensagem  hamiltonfviana em 27/3/2012, 14:37

    No meu BD, necessito que ao atualizar o campo Número do contrato da TBContrato, automaticamente, seja atualizado o campo correspondente na TBTimeline_template. Utilizei a seguinte isntrução em sql:

    Private Sub ctr_num_AfterUpdate()

    Dim sql As String
    sql = "insert into [timeline_template]([tpl_ctr_num])" & _
    "select [ctr_num] from contrato" & _
    "inner join [timeline_template]" & _
    "on contrato.[ctr_num] = timelinetemplate.[tpl_ctr_num];"

    DoCmd.RunSQL = sql

    End Sub

    Porém o que eu quero não acontece, o que acho estranho é que não dá nenhum erro de compilação! Tem como debugar instruções em sql?

    Abraço
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  JPaulo em 27/3/2012, 15:32

    Teste;

    Dim sql As String
    sql = "INSERT INTO [timeline_template] ([tpl_ctr_num])" _
    & " SELECT [ctr_num]" _
    & " FROM contrato" _
    & " INNER JOIN [timeline_template]" _
    & " ON contrato.[ctr_num] = timeline_template.[tpl_ctr_num];"

    DoCmd.RunSQL (sql)



    .................................................................................
    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

    [Resolvido]Insert entre duas tabelas. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Insert entre duas tabelas. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Insert entre duas tabelas. Folder_announce_new Instruções SQL como utilizar...
    avatar
    hamiltonfviana
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 27/03/2012

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  hamiltonfviana em 27/3/2012, 16:01

    JPaulo fiz o que mandou, acontece a consulta, mas não é adicionado o registro na TBtimeline_template!!

    Ambas tabelas estão com seus indices com tipo número, chave primária e um contador automatico inserido em seu valor padrao =SeImed(DContar("[tpl_cod]";"timeline_template")=0;1;DMáx("[tpl_cod]";"timeline_template")+1)

    O que faço! E outra coisa, tem como tirar esses avisos que aparecem antes de se copiar os dados entre os forms?

    Pq toda vez que a procedure é executada, aparece uma msgbox pedindo confirmação!

    Abraço, obrigado!
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  JPaulo em 27/3/2012, 17:22

    Só vendo inloc.

    Se quiser anexar aqui uma parte do seu banco, em formato .zip, é mais facil analisar.

    Tirar msg`s

    Antes do DoCmd.RunSQL (sql)


    DoCmd.SetWarnings False ' desabilita mensagem de segurança
    DoCmd.RunSQL (sql)
    DoCmd.SetWarnings True ' habilita mensagem de segurança



    .................................................................................
    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

    [Resolvido]Insert entre duas tabelas. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Insert entre duas tabelas. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Insert entre duas tabelas. Folder_announce_new Instruções SQL como utilizar...
    avatar
    hamiltonfviana
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 27/03/2012

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  hamiltonfviana em 27/3/2012, 19:09

    Problema é q não posso subir o BD, é do trabalho aqui!!

    O que significa violação de chaves??? Não quer adicionar o registro por essa violação!!!

    Obrigado pela dica das msgs!
    avatar
    hamiltonfviana
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 27/03/2012

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  hamiltonfviana em 28/3/2012, 15:07

    Up!! confused
    JPaulo
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  JPaulo em 28/3/2012, 15:09

    Então se não consegue anexar aqui o seu banco, no minimo, crie um banco vazio, importe para lá as tabelas correspondentes à sua duvida para ajudar-mos a reproduzir o INSERT.

    Pode apagar os dados...


    .................................................................................
    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

    [Resolvido]Insert entre duas tabelas. Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Insert entre duas tabelas. Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Insert entre duas tabelas. Folder_announce_new Instruções SQL como utilizar...
    avatar
    hamiltonfviana
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 27/03/2012

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  hamiltonfviana em 28/3/2012, 15:21

    Certo. Aí está JPaulo.

    Lembrando que o problema tá no after update do formContrato!

    Abraço!
    Anexos
    [Resolvido]Insert entre duas tabelas. AttachmentInsert Into.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (111 Kb) Baixado 62 vez(es)
    avatar
    hamiltonfviana
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 27/03/2012

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  hamiltonfviana em 29/3/2012, 15:24

    Private Sub Form_Current()
    Dim sql As String

    sql = "INSERT INTO [timeline_template] ([tpl_ctr_num],[tpl_tipo_contr])" & _
    "SELECT [ctr_num], [ctr_tipo_contr] " & _
    "FROM contrato " & _
    "INNER JOIN [timeline_template]" & _
    "ON contrato.[ctr_num] = [timeline_template].[tpl_ctr_num]"
    DoCmd.GoToRecord acDataForm, "[timeline_template]", acNext

    DoCmd.RunSQL (sql)

    End Sub


    Ao avançar um registro no FormContrato aparece o seguinte erro: "Erro em tempo de execução '2489':
    O objeto '[timeline_template]' não está aberto.

    A que se refere?

    Minha idéia é prencher com os dados do FormContrato o FormTemplate e avançar um registro.
    Abraço!


    avatar
    hamiltonfviana
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 27/03/2012

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  hamiltonfviana em 30/3/2012, 12:51

    Up!!!
    avatar
    hamiltonfviana
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 27/03/2012

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  hamiltonfviana em 3/4/2012, 15:43

    Up! Poxa pessoal, ninguem se interessou pelo meu problema??
    Dá uma forcinha ai, por gentileza, rsrs!

    Brincadeiras a parte, agradeço a atenção!
    avatar
    Convidad
    Convidado

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  Convidad em 3/4/2012, 16:03


    Uma indicação:

    Crie uma consulta com o assistente, no Menu Consulta escolha Consulta Acréscimo e após construí-la no modo Design, teste exibindo no modo FolhaDeDados.
    Exiba-a no modo SQL para ver e copiar a sintaxe para a sua variável sql.
    Ou salve a consulta para usar DoCmd.RunSQL ("NomeConsulta") direto.

    Uma vantagem de usar uma consulta salva, é que se vc renomear um campo de tabela, a alteração será propagada para o nome na consulta, desde que rastrear e propagar auto-correção estejam habilitadas nas Opções do Access.

    No caso de código escrito no módulo, é preciso alterar manualmente os Nomes.
    avatar
    Convidad
    Convidado

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  Convidad em 12/5/2012, 18:26


    Como não tivemos retorno, o tópico passa a resolvido.

    Se necessário, basta dar continuidade.


    Conteúdo patrocinado

    [Resolvido]Insert entre duas tabelas. Empty Re: [Resolvido]Insert entre duas tabelas.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 16/10/2019, 21:11