MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Comando para excluir com critérios não responde

    Compartilhe

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 173
    Registrado : 31/08/2012

    [Resolvido]Comando para excluir com critérios não responde

    Mensagem  Chamon Consultoria em Ter 30 Ago 2016, 14:56

    Bom dia!

    Bd em access 2010.

    Formulário "Compras" com Subformulário "ComprasSub".

    Os produtos da compra são inseridos no subformulário.

    No Formulário Compras há um botão para excluir a linha selecionada no subformulário.
    Até então os campos para filtro de exclusão eram o número da compra e o código do produto.
    Porém quando há mais de um registro com o  mesmo código do produto, o comando excluía todos itens com o esse código.
    Acrescentei no subformulário um campo de autonumeração (via vba) chamado "Item" do tipo Texto, para criar um diferencial na linha a ser excluída.
    Os campos para filtro seriam: o número da compra, o código do produto e o número Item.  Assim, teria o mesmo número da compra, o mesmo código do produto, mas o número do item seria diferente.

    O comando era:

    strSQL = "DELETE FROM zzz_tbl_ComprasItens WHERE CODIGO = " & "'" & txtCodigo & "'"
    strSQL = strSQL & " AND NUMEROENTRADA = " & "'" & txtNUMEROENTRADA & "'"    

    Agora está:

    strSQL = "DELETE FROM zzz_tbl_ComprasItens WHERE CODIGO = " & "'" & txtCodigo & "'"
    strSQL = strSQL & " AND NUMEROENTRADA = " & "'" & txtNUMEROENTRADA & "'"    
    strSQL = strSQL & " AND ITEM = " & "'" & nItem & "'"

    Porém quando clico no botão excluir nada acontece.

    Desde já agradeço pelas sugestões.


    Última edição por Chamon Consultoria em Ter 30 Ago 2016, 16:16, editado 1 vez(es)

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3217
    Registrado : 15/03/2013

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  ahteixeira em Ter 30 Ago 2016, 15:57

    Olá,

    Caso o nItem seja numerico teste assim:
    Código:
    strSQL = "DELETE FROM zzz_tbl_ComprasItens WHERE CODIGO = " & "'" & txtCodigo & "'"
    strSQL = strSQL & " AND NUMEROENTRADA = " & "'" & txtNUMEROENTRADA & "'"
    strSQL = strSQL & " AND ITEM = "  & nItem

    Abraço

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 173
    Registrado : 31/08/2012

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  Chamon Consultoria em Ter 30 Ago 2016, 16:14

    ahteixeira,

    testei sua sugestão e apareceu a mensagem:

    Tipo de dados incompatível na expressão de critério.


    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3217
    Registrado : 15/03/2013

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  ahteixeira em Ter 30 Ago 2016, 16:39

    Olá, tem como postar a base de dados com a tabela em questão.
    Assim fica mais fácil para poder testar.
    Não compreendi bem o que está a fazer com o &
    Poderia explicar também qual a razão da sua utilização.
    Abraço

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 173
    Registrado : 31/08/2012

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  Chamon Consultoria em Ter 30 Ago 2016, 18:33


    Vou explicar com um exemplo:

    (Formulário Compras)

    Número de entrada 456
    -----------------------------------
    (Subformulário ComprasSub) sem o campo "Item"

    Linha1: Produto ABC - Código 000011
    Linha2: Produto ABC - Código 000011
    Linha3: Produto SDF - Código 000012

    Digamos que eu queria excluir apenas o produto da linha 2.
    Ao clicar na linha 2 e em seguida no botão excluir utilizando o comando:

    strSQL = "DELETE FROM zzz_tbl_ComprasItens WHERE CODIGO = " & "'" & txtCodigo & "'"
    strSQL = strSQL & " AND NUMEROENTRADA = " & "'" & txtNUMEROENTRADA & "'"

    O sistema exclui as linhas 1 e 2, pois ambas atendem aos critérios do comando.
    -----------------------------------------------------------------------------------------------

    Após incluir o campo "Item" no subformulário:

    (Formulário Compras)

    Número de entrada 456
    -----------------------------------
    (Subformulário ComprasSub)

    Linha1: Produto ABC - Código 000011 - Item 001
    Linha2: Produto ABC - Código 000011 - Item 002
    Linha3: Produto SDF - Código 000012 - Item 003

    Agora existe um diferencial entre as linhas 1 e 2 para que seja excluída apenas a linha 2, por exemplo.

    Falta ajustar o comando para que ele "filtre" essa diferenciação e exclua apenas a linha selecionada.







    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3217
    Registrado : 15/03/2013

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  ahteixeira em Sab 10 Set 2016, 00:04

    Olá, acho que o que está a falhar é a referencia ao formulário principal.
    Experimente fazer a referencia completa.
    Forms!Compras!nItem

    Ficando algo assim:
    Código:
    strSQL = "DELETE FROM zzz_tbl_ComprasItens WHERE CODIGO = " & "'" & txtCodigo & "'"
    strSQL = strSQL & " AND NUMEROENTRADA = " & "'" & txtNUMEROENTRADA & "'"   
    strSQL = strSQL & " AND ITEM = " & "'" & Forms!Compras!nItem & "'"

    Caso seja numérico o ITEM:

    Código:
    strSQL = "DELETE FROM zzz_tbl_ComprasItens WHERE CODIGO = " & "'" & txtCodigo & "'"
    strSQL = strSQL & " AND NUMEROENTRADA = " & "'" & txtNUMEROENTRADA & "'"   
    strSQL = strSQL & " AND ITEM = " &  Forms!Compras!nItem

    Foi no iPad, pode ter erros.
    Abraço

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 173
    Registrado : 31/08/2012

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  Chamon Consultoria em Dom 11 Set 2016, 18:28

    ahteixeira,

    obrigado pelas dicas, mas não funcionaram.

    Acusou o seguinte erro:

    Erro em tempo de execução '2465':
    Não pode localizar o campo 'nItem' referido em sua expressão.


    No tópico que postei sobre as etiquetas, você disponibilizou um comando para excluir por linha que funcionou muito bem.
    Tentei adaptá-lo, mas também está apresentando erro. Segue código:

    CurrentDb.Execute "DELETE * FROM zzz_tbl_ComprasItens WHERE [CODIGO] = " & Me.ComprasSub!CODIGO & " and [NUMEROENTRADA] = " & Me.ComprasSub!NUMEROENTRADA & " and [ITEM] = " & Me.ComprasSub!ITEM & "'"

    Acusou o seguinte erro:

    Erro de sintaxe na sequência de caracteres na expressão de consulta '[CODIGO]=00001 and [NUMEROENTRADA]=000005 and [ITEM]=002".


    Observação: o formato de todos esses campos é texto.


    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3217
    Registrado : 15/03/2013

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  ahteixeira em Dom 11 Set 2016, 19:54

    Olá,
    Na minha ultima mensagem coloquei Forms!Compras!nItem , caso não fosse este o nome do form, deveria ajustar.

    Quanto à sua última mensagem, tente assim:
    Código:
    CurrentDb.Execute "DELETE * FROM zzz_tbl_ComprasItens WHERE [CODIGO] = '" & Me.ComprasSub!CODIGO & "' and [NUMEROENTRADA] = '" & Me.ComprasSub!NUMEROENTRADA & "' and [ITEM] = '" & Me.ComprasSub!Item & "'"

    Caso se mantenha, como já referi, será melhor postar a base de dados com os objectos envolvidos na questão.
    Abraço

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 173
    Registrado : 31/08/2012

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  Chamon Consultoria em Dom 11 Set 2016, 21:30

    ahteixeira,

    Na sua fala: "Na minha ultima mensagem coloquei Forms!Compras!nItem , caso não fosse este o nome do form, deveria ajustar."
    Fiz o teste com os dois nomes: Forms!Compras!nItem e Forms!ComprasSub!nItem . Ambos deram erro.

    Mas, sua última sugestão funcionou perfeitamente. Apenas incluí : Me.Recalc conforme indicado no post das etiquetas.

    Tenho dúvidas quanto ao uso dos sinais (' aspas simples e " duplas). Só sei que é relacionado ao tipo do campo (texto ou número).
    Tenho procurado por materiais na internet, video aulas no Youtube, mas ainda não encontrei nada com indicações mais diretas... dizendo quando deve-se usar e para que servem...


    Caso você saiba onde encontrar um material bacana para indicar, ajudará bastante.

    Mais uma vez, parabéns e muito obrigado pela ajuda!

    Abraço e sucesso!



    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3217
    Registrado : 15/03/2013

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  ahteixeira em Dom 11 Set 2016, 22:52

    Olá, que bom que resolveu!

    Vou tentar explicar se for do tipo string (texto, que foi o seu caso), deve colocar a aspa simples também, exemplo:
    ...[ITEM] = '" & Me.ComprasSub!Item & "'"

    Se for numerico, não deve colocar a aspa simples, exemplo:
    ...[ITEM] = " & Me.ComprasSub!Item & ""

    Abraço

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 173
    Registrado : 31/08/2012

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  Chamon Consultoria em Seg 12 Set 2016, 00:23

    Obrigado!

    Abraço

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3217
    Registrado : 15/03/2013

    Re: [Resolvido]Comando para excluir com critérios não responde

    Mensagem  ahteixeira em Seg 12 Set 2016, 11:51

    cheers

      Data/hora atual: Sab 10 Dez 2016, 06:48