1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Apagar um registo - VBA [Access]

Discussão em 'Programação' iniciada por Goldberg, 6 de Abril de 2008. (Respostas: 15; Visualizações: 7325)

  1. Goldberg

    Goldberg Power Member

    Boas.
    Tenho a seguinte rotina para apagar um registo no botão eliminar:

    Sendo o "DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70"
    o código que vem predeninido quando se cria o botão eliminar

    O problema é que quando vou apagar um resgisto, às vezes preciso de carregar no "sim" umas 5 vezes até apagar mesmo. às vezes apaga logo, outras vezes é preciso carregar mais vezes.
    É estranho pois o código nunca muda.

    Alguém tem alguma ideia?
     
  2. jpaulino

    jpaulino Power Member

    Experimenta a colocar no inicio do código:

    DoCmd.SetWarnings False

    E no final

    DoCmd.SetWarnings True
     
  3. Goldberg

    Goldberg Power Member

    assim o fiz, mas sem sucesso.
     
  4. jpaulino

    jpaulino Power Member

    Ok, então dá mais dados do que queres apagar, qual a tabela, etc, que eu mostro-te outro método.
     
  5. Goldberg

    Goldberg Power Member

    São em vários formulários, por conseguinte, esse código estava num pequeno procedimento o qual ia chamando no momento em que fosse necessário.
    Por exemplo, o Cliente 1 (cod_cli) da tabela Cliente
     
  6. jpaulino

    jpaulino Power Member

    Faz um procedimento e utiliza algo assim:

    Dim db As Database
    Dim SQL As String
    Set db = CurrentDb
    SQL = "DELETE FROM myTable WHERE ID = myRecord"
    db.Execute SQL, dbInconsistent
    db.Close
    Set db = Nothing
     
  7. Goldberg

    Goldberg Power Member

    Tentei e funciona, contudo não tentei em todas as circunstâncias no que tentei no meu antigo código, porque assim que elimina coloca em todos os campos "#Eliminado", e não é isso que prentedo. Ainda tentei, por exemplo, me.cod_postal = "", mas não apagou.

    Tentei este agora, e estava a funcionar bem até chamar o formulário através de um formulário "menu"

    O tal menu que falei é um outro formulário, mas só contem uns meros botões com o código, por exemplo
    "DoCmd.OpenForm "Postal"

    Sempre que chamo o formulário através desse tal menu o código apagar a tende a deixar de funcionar :s
     
    Última edição: 7 de Abril de 2008
  8. jpaulino

    jpaulino Power Member

    Mas a unica coisa que tens de fazer a seguir é um requery ou refresh à lista, table, etc.
     
  9. Goldberg

    Goldberg Power Member

    Ah bom, não me lembrei.
    Deu este erro que não sei o que é "não é possível executar consulta selecção".

    O Código:
     
  10. jpaulino

    jpaulino Power Member

    Mas explica lá onde aparece os #deleted e pensava que estava a usar o outro código (que funciona de certeza)
     
  11. Goldberg

    Goldberg Power Member

    Ah, sim sim. Erro meu.

    Usei o me.refresh no código que coloquei há 2 posts atrás (sem contar com este).
    Quando abro o formulário "Postal" e cliquo para apagar, apaga sem dar erro algum.
    Quando abro o formulário Menu, e abro o formulário "Postal", através de um botão no formulário Menu, elimina 2 depois aparece #Eliminado em todos os campos do formulário (neste caso no cod_cli e localidade)
    Acho que o problema está mesmo no menu, mas tenho o código do menu todo comentado, apenas o código para chamar os formulários ♣
     
  12. jpaulino

    jpaulino Power Member

    >>Ah, sim sim. Erro meu.
    >>Quando abro o formulário Menu, e abro o formulário "Postal", através de um botão no formulário Menu, elimina 2 depois aparece >>#Eliminado em todos os campos do formulário (neste caso no cod_cli e localidade)


    Mostra lá isto ...
     
  13. Goldberg

    Goldberg Power Member

    Mostro como assim?
    Simplesmente quando cliquo no eliminar, elimina, mas aparece #Eliminado nas caixas de texto.

    O código que está é:
    As variáveis globais são:

    Global db As Database
    Global registo As Recordset
    Global Sql_Exp As String
     
  14. jpaulino

    jpaulino Power Member

    Mais uma vez: já fizeste requery ???

    Me.Requery no final do código.

    Com o que pus funciona de certeza!
     
  15. Goldberg

    Goldberg Power Member

    Sim, parece funcionar tudo bem após o Me.Requery.
    Algum coisa, volto.
    Agradeco a ajuda jpaulino

    Já agora, é possível esconder a Janela da BD por código?
    Refiro-me àquela onde se podem ver os formulários, relatórios, tabelas...
    Sei que tenho a opção Ferramentas > Arranque > Tirar o checked na "Mostrar Janela da BD", mas o que eu procuro mesmo era tirar por código.

    Já não faz mal, consegui encontrar
     
    Última edição pelo moderador: 12 de Abril de 2008
  16. jpaulino

    jpaulino Power Member

    Tudo é possível meu amigo ... (excepto os números para o euromilhões)

    ' Para esconder
    DoCmd.SelectObject acTable, , True
    DoCmd.RunCommand acCmdWindowHide

    ' Para voltar a mostrar
    DoCmd.SelectObject acTable, , True
     

Partilhar esta Página