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


2 participantes

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Nocte 12/1/2012, 12:31

    Procurei aqui no forum e achei soluções similares a que procuro, mas não consegui adapta-las.

    Trabalho muito bem com excel porem sou iniciante em Access.

    Bom o que preciso.

    Tenho um formulário que pega informações da tabela: Banco de Dados.

    Desejo criar um botão que que exclua o registro e envie para uma tabela chamada histórico, e para confirmar esta ação, ele deve clicar em uma caixa Sim/Não.

    Caso "Sim", enviar todo o registro a tabela: Histórico

    Sei que é facil mas me perco quando preciso jogar todos os registros em uma outra tabela.

    Criei um botão e inserir ao clicar excluir registro.
    No desenvolvimento desta macro ficou assim:

    AoOcorrerErro
    Next;
    IrParaControle
    =[Screen].[PreviousControl].[Nome]
    LimparErroDeMacro
    Negado [Formulário].[NewRecord]
    ExecutarComando
    ExcluirRegistro
    [Formulário].[NewRecord] E Negado [Formulário].[Sujo]
    AlarmeSonoro
    [Formulário].[NewRecord] E [Formulário].[Sujo]
    ExecutarComando
    Desfazer
    [MacroError]<>0
    CaixaDeMensagem
    =[MacroError].[Description]; Sim; Nenhum;

    Obrigado a todos!
    avatar
    Convidad
    Convidado


    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Convidad 13/1/2012, 23:04

    Olá

    Adapte este código:

    Private Sub NomeDoBotao_Click()
    If MsgBox("Deseja transferir o registro?", VbYesNo, "Confirmação") = VbYes Then
    CurrentDb.Execute "INSERT INTO NomeDaTabelaDestino SELECT * FROM NomeDaTabelaOrigem WHERE NomeCampoID=" & Me.NomeCampoID
    CurrentDb.Execute "DELETE * FROM NomeDaTabelaOrigem WHERE NomeCampoID=" & Me.NomeCampoID
    Me.Requery
    End If
    End Sub

    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Nocte 16/1/2012, 16:26

    Obrigado Norbs!

    Irei fazer os testes e lhe mando um feedback.

    Obrigado!
    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Nocte 17/1/2012, 15:30

    Norbs, não está dando certo.
    E como não sei muito bem a linguagem de SQL não estou conseguindo solução.

    ele sempre diz que existe um erro:

    Erro: 3061

    Parametros Insuficientes: Eram esperados 1.

    Verifiquei no google e percebi que era erro de nomeação. Mas tentei de tudo quanto Jeito para modificar.
    Vou colocar os nomes de minha tabela e mostrar como coloquei no codigo que me enviou:

    NomeDaTabelaDestino: Historico

    NomeDaTabelaOrigem: tblData

    NomeCampoID: Obra

    O campo Obra existe nas duas tabelas: Historico e tblData, bem como todos os outros campos serem de mesmo nome, copiei a tabela tblData e colei somente o formato.


    Private Sub FecharObra_Click()

    If MsgBox("Deseja fechar esta obra?", vbYesNo, "Confirmação") = vbYes Then
    CurrentDb.Execute "INSERT INTO Historico SELECT * FROM tblData WHERE Obra=" & Me.Obra
    'CurrentDb.Execute "DELETE * FROM NomeDaTabelaOrigem WHERE NomeCampoID=" & Me.NomeCampoID
    Me.Requery
    End If

    End Sub

    deixei a opção de apagar o regsitro desativado somente para testar o copiar e colar das tabelas.

    Obrigado!
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  JPaulo 17/1/2012, 15:35

    Campo "Obra" é numerico ou texto ???


    .................................................................................
    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]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Folder_announce_new Instruções SQL como utilizar...
    avatar
    Convidad
    Convidado


    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Convidad 17/1/2012, 21:59

    Olá

    Creio que seja isso:


    CurrentDb.Execute "INSERT INTO Historico SELECT * FROM tblData WHERE tblData.Obra=" & Me.Obra
    CurrentDb.Execute "DELETE * FROM NomeDaTabelaOrigem WHERE NomeDaTabelaOrigem.NomeCampoID=" & Me.NomeCampoID

    Espero ter ajudado

    Abraços
    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Nocte 19/1/2012, 17:40

    Continua dando o mesmo erro.

    Vamos lá, Sei que vai ser pergunta bem noob, mas se eu entender umas coisas eu facilito a vida de todo mundo aqui.

    CurrentDb.Execute "INSERT INTO Historico SELECT * FROM tblData WHERE tblData.Obra=" & Me.Obra

    A instrução: CurrentDb.Execute fala que ela deve ser executada na access que esta aberto e editado no momento.

    INSERT INTO: é o comando de atualização ou copia de campos

    SELECT: é o comando que mostra a seleção realizada, como foi utilizado * logo após, ele esta informando que é para selecionar todos os campos do relatório.

    FROM: tabela de origem.

    Where: comando de escolhas

    Agora que vem a parte que eu não entendo nada:

    tblData.Obra=" & Me.Obra

    tblData.Obra: Esta informando exatamente o campo que desejo verificar o Where.

    =" : esse igual que eu não entendo o porque esta nulo logo após, não deveria ter uma instrução?

    & Me.Obra: o que é exatamente esse Me.?

    Gente sei que são perguntas noobs mesmo, mas nao estou achando uma resposta para elas, principalmente a logica de programação usada, eu sempre trabalhei com pascal (sei que é velho....), então estou um pouco desatualizado...

    Obrigado novamente!
    avatar
    Convidad
    Convidado


    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Convidad 19/1/2012, 18:34

    Vejamos:

    tblData.Obra=" & Me.Obra ' Onde o campo obra da tabela(tblData) é igual ao controle (me.Obra) do teu form

    tblData.Obra: Esta informando exatamente o campo que desejo verificar o Where.

    =" : esse igual que eu não entendo o porque esta nulo logo após, não deveria ter uma instrução?

    & Me.Obra: o que é exatamente esse Me.?

    Olhe toda a linha SQL "INSERT INTO Historico SELECT * FROM tblData WHERE tblData.Obra=" & Me.Obra



    Veja que toda linha é uma sequencia de caracteres dentro de aspas. As aspas são fechada no sinal de = porque logo em seguida vem a referência do controle do teu formulário. E o que une as duas coisas é o caractere & .
    Me = quando vc se refere a um controle no mesmo formulário, ao invés de colocar forms!NomedoForm!Controle
    você usa o Me!Controle. Mais fácil, né?

    Lendo a linha toda seria assim:

    INSIRA na tabela Historico tudo(*) a partir da tblData ONDE o campo obra da tblData seja = ao controle Obra do formulário que estou usando agora.

    Tente assim:
    Docmd.RunSQL "INSERT INTO Historico SELECT * FROM tblData WHERE tblData.Obra=" & Me.Obra
    docmd.RunSQL CurrentDb.Execute "DELETE * FROM NomeDaTabelaOrigem WHERE NomeDaTabelaOrigem.NomeCampoID=" & Me.NomeCampoID

    Teste primeiro um e depois o outro, ok?

    abraços

    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Nocte 19/1/2012, 19:41

    Balem,

    Funcionou perfeitamente. Mas só não entendo o porque funcionou em um mas no outro não?

    Bom só tenho mais umas perguntas:

    Quando rodo seu código, ele abre uma tela para inserir o valor do campo.
    Se eu escolho cancelar ele dá erro.

    Se eu digito um outro valor errado, ele não trava, e ainda se o valor errado for exatamente igual a um valor qualquer dentro de toda a tabela, ele copia ou apaga o código.

    Eu tenho que realizar duas confirmações para realizar os dois procedimentos, existe uma forma de simplificar para digitar somente uma vez, evitando assim erro do usuario?

    Eu posso modificar o texto da caixa de confirmação?

    este comando: Docmd.RunSQL é o gerador dessa caixa de texto?


    Obrigado!!!!!!!!


    avatar
    Convidad
    Convidado


    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Convidad 19/1/2012, 19:58

    Não, o Docmd.RunSql diz: execute a instrução sql que está a seguir entre aspas.
    Ou seja, ele está executando uma consulta ação via VBA.
    O fato de estar abrindo uma caixa de texto pedindo pelo valor do parâmetro, significa que o nome de um dos controles dentro da instrução SQL (a sequência entre aspas) está com o nome errado. Como não está encontrando aquele valor, ele pede para colocar manualmente.
    Verifique atentamente os nomes dos controles. Por se tratar de uma sequencia de caracteres o depurador não vai achar onde está o erro.
    Eu pedi para você testar um de cada vez, pois assim se desse erro no primeiro e o segundo funcionasse, o registro seria deletado sem ter sido transferido para outra tabela.
    Uma vez que os dois códigos estejam funcionando, pode-se usar os dois um em seguida do outro.
    Mas não esqueça de coloca antes das duas linhas: docmd.Setwarnings false e depois dela: docmd.setwarnings true.
    O primeiro desabilita a tela de aviso do Access avisando da operação em questão o segundo reabilita os avisos do access.
    Abraços
    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Nocte 23/1/2012, 13:09

    Bom dia Balem!

    Observei todos os controles e estão com os nomes certos.
    Utilizei o Assistente de formulário.

    Por ele só modifiquei a posição do rotulo e da caixa de texto.
    Na minha tabela o nome da coluna é Obra.

    Este tipo de campo é texto. Pois as Obras são constituídas de sequencia alfanumérica como exemplo: SR09876.
    Irei postar o DB para uma melhor visualização.

    https://docs.google.com/open?id=0BxFjFyyHO-U5NTNkN2E3MDEtMjFlMC00MjIwLTg5OWUtMzA0OTdkZGM2ZmE4

    http://tinyurl.com/6nqmoye

    Obrigado!
    avatar
    Convidad
    Convidado


    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Convidad 23/1/2012, 14:51

    Olá Nocte

    Coloque o código a seguir no lugar daqueles:

    Código:


    DoCmd.RunSQL "INSERT INTO Historico SELECT tbl_DB.* FROM tbl_DB WHERE tbl_DB.Obra = " & "'" & Me!Obra & "'"
    DoCmd.RunCommand acCmdDeleteRecord

    Abraços
    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Nocte 23/1/2012, 15:41

    Perfeito Balem!!!


    Poxa muito obrigado pela ajuda, serviu direitinho, e perfeitamente!

    Caso tenha disponibilidade, poderia me explicar o seguinte:

    bl_DB.Obra = " & "'" & Me!Obra & "'"

    Agora que inseriu os ' que diferença fez?

    Vlw camarada, desejo mais sucesso em sua vida!
    avatar
    Convidad
    Convidado


    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Convidad 23/1/2012, 16:20

    Pois é amigo

    Muitos programadores pecam ao se tratar de variáveis tipo string.
    Sempre que vamos referenciar um campo String usamos Aspas duplas (") e conforme o caso Aspas simples (')

    Veja que na instrução SQL, toda ela está entre aspas duplas

    "INSERT INTO Historico SELECT tbl_DB.* FROM tbl_DB WHERE tbl_DB.Obra = " & "'" & Me!Obra & "'"

    Se você colocar o nome do controle (Me!Obra) dentro das aspas duplas, o access entenderá que é para usar o me!Obra e não o valor do controle, por isso separamos a parte string da instrução SQL e logo após referenciamos dessa maneira ( "'" & Me!Obra & "'" ).
    Então o access primeiro vai pegar o valor de Me!Obra e depois coloca-los entre aspas simples :
    bl_DB.Obra = " & "'" & SR00001 & "'".
    Veja que poderíamos escreve a instrução SQl assim:
    "INSERT INTO Historico SELECT tbl_DB.* FROM tbl_DB WHERE tbl_DB.Obra = '" & " & Me!Obra & "'"
    Veja a sutil diferença, mas que da o mesmo resultado.
    Talvez e não me fiz entender.
    Procure literatura na net sobre aspas simples e duplas no MS Access.

    abraços
    avatar
    Nocte
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 10/01/2012

    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty RESOLVIDO

    Mensagem  Nocte 23/1/2012, 17:40

    Ok, muito obrigado novamente pela atenção e pela ajuda!


    Conteúdo patrocinado


    [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.) Empty Re: [Resolvido]Botão Fechar (Excluir registro de tabela e enviar a outra tabela.)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 19:06