Inquiridor
Está excluindo sempre o primeiro da tabela.

Pergunta
-
Boa tarde pessoal,
Estou com uma dificuldade que é a seguinte: Através de um form eu faço uma busca e seleciono um registro do resultado da busca, então executo o código abaixo para tentar excluir o registro.
O fato é que o aplicativo está excluindo sempre o primeiro registro da tabela. Se o registro escolhido para exclusão não for o primeiro, o aplicativo está substituindo o primeiro registro pelo registro selecionado.
Code SnippetDim excluir, resposta
resposta = MsgBox("Você tem certeza que deseja excluir o registro selecionado?", vbYesNo + vbQuestion, "Exclusão?")
If resposta = vbNo Then
Exit Sub
Else:Dim Código As String
Código = Forms!Registro_Ocorrências!Código.Value
Set rst = CurrentDb.OpenRecordset("select * FROM TbRegistros WHERE TbRegistros.Código=" & Código & "")
rst.Delete
Forms!Registro_Ocorrências.Requery
Forms!Registro_Ocorrências.Consulta_Registros_Subform.Requery
MsgBox "Registro excluído com sucesso!", , "Exclusão!"End If
Tentei també o seguinte código:
Code SnippetDim excluir, resposta
resposta = MsgBox("Você tem certeza que deseja excluir o registro selecionado?", vbYesNo + vbQuestion, "Exclusão?")
If resposta = vbNo Then
Exit Sub
Else:Dim Código As String
Código = Forms!Registro_Ocorrências!Código.ValueDim db As Database
Dim strsql As String
Set db = CurrentDb
strsql = "delete FROM TbRegistros WHERE TbRegistros.Código=" & Código & ""
db.Execute strsqlForms!Registro_Ocorrências.Requery
Forms!Registro_Ocorrências.Consulta_Registros_Subform.Requery
MsgBox "Registro excluído com sucesso!", , "Exclusão!"End If
Alguém pode me dizer se o problema está no código ou nas propriedades da tabela ou do form?
Muito obrigado!
terça-feira, 9 de dezembro de 2008 16:12
Todas as Respostas
-
Ola Wagner,
Olhando rapidamente, notei que você definiu Código como String, mas na consulta (sql) está usando como Número.
Luciano
quarta-feira, 10 de dezembro de 2008 10:19 -
Olá Luciano,
Obrigado pela dica.
Mas ainda assim o Aplicativo está respondendo da mesma forma. Excluido sempre o primeiro da tabela.
Olhei nas propriedades da tabela e do form mas não consegui identificar o que pode estar causando essa anormalidade no comportamento esperado.
quarta-feira, 10 de dezembro de 2008 16:46 -
Ola Wagner,
Os 03 tipos abaixo funcionariom.
Code SnippetOption Compare Database
Option Explicit
Dim tbl As Recordset
Function teste()
Call apaga_registro_3("a")
End Function
Function apaga_registro_1(v_txt As String)
Set tbl = CurrentDb.OpenRecordset("SELECT tbl_01.texto " & _
"FROM tbl_01 " & _
"WHERE (((tbl_01.texto)= '" & v_txt & "'));")
If tbl.EOF = False Then
With tbl
.Delete
End With
End If
tbl.Close
Set tbl = Nothing
CurrentDb.Close
End Function
Function apaga_registro_2(v_txt As String)
Set tbl = CurrentDb.OpenRecordset("SELECT tbl_01.texto " & _
"FROM tbl_01 " & _
"WHERE (((tbl_01.texto)= '" & v_txt & "'));")tbl.Delete
tbl.Close
Set tbl = Nothing
CurrentDb.Close
End Function
Function apaga_registro_3(v_txt As String)
CurrentDb.Execute "DELETE tbl_01.texto " & _
"FROM tbl_01 " & _
"WHERE (((tbl_01.texto)='" & v_txt & "'));"End Function
quarta-feira, 10 de dezembro de 2008 17:08 -
Bom dia Luciano!
Primeiro gostaria de agradecer a sua presteza e disposição em achar uma solução.
Utilisei os três exemplos de código que você me passou e, os três funcionaram para a exclusão, porém, o comportamento está sendo o mesmo.
Deixa eu explicar com mais detalhes pra ver se você consegue pegar algum furo no processo:
Tenho uma tabela chamada "TbRegistros". Em um Form eu utilisei um SubForm como Grid para carregar o resultado das consultas (extraídas dessa tabela). Na primeira coluna desse SubForm eu coloquei um link para detalhar o registro em campos abaixo. Coloquei um campo que captura o código(ID) do registro selecionado e é dai que eu capturo o ID para jogar no fonte, com aquele exemplo que mencionei.
Acredito que tenha alguma configuração da Tabela ou do Form ou SubForm que esteja fazendo com que o Aplicativo se comporte dessa forma.
Mais uma vez... muito obrigado!
quinta-feira, 11 de dezembro de 2008 12:33 -
Wagner, se puder mandar um bd de exemplo do que ocorre, pois, não estou entendendo o problema.
Luciano
sexta-feira, 12 de dezembro de 2008 13:11 -
Marco,
o código está correto.
Pause a execução na linha
strsql = "delete FROM TbRegistros WHERE TbRegistros.Código=" & Código & ""
e veja se 'Código' contém o valor que você espera.
sábado, 13 de dezembro de 2008 02:02Moderador -
Bom dia Luiz,
Pausei a execução e verifiquei que o valor do código está correto.
Acredito que o problema deva estar nas propriedades da Tabela de orígem ou no Form ou no SubForm.
Tem algum e-mail que eu possa passar uma parte desse BD pra você ver se consegue identificar o problema?
segunda-feira, 15 de dezembro de 2008 12:07 -
Olá Wagner,não vou nem pedir que me mande o BD porque neste final de ano sei que vou acabar nem abrindo, tamanha é a quantidade de trabalho em que estou envolvido.Para chegar à solução, continue executando o código linha a linha e abrindo a tabela para ver o que acontece.Se foi disparado o comando "Delete from tabela where codigo=5", não é possível o Access ter apagado o registro de código 1. Se aconteceu do registro 1 ser apagado, o comando foi disparado em outro lugar.Verifique também na configuração dos relacionamentos se não tem alguma exclusão em cascata que possa estar causando este resultado não desejado.domingo, 21 de dezembro de 2008 12:07Moderador