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]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 : 194
    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)
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4183
    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 : 194
    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.

    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4183
    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 : 194
    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.






    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4183
    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 : 194
    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.

    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4183
    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 : 194
    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!


    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4183
    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 : 194
    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
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4183
    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: Ter 25 Jul 2017, 09:46