Ir para conteúdo
Fórum Script Brasil
  • 0

Ado


Guest eder lucio

Pergunta

Guest eder lucio

Olá pessoal, estou tendo problemas para excluir arquivos no banco de dados access utilizando o componente ado, a chave primária do arquivo é de auto numeração, e o comando que estou utilizando é esse

procedure TForm2.BitBtn4Click(Sender: TObject);

var

codigo: string;

begin

if ( MessageDlg('Você Confirma a Exclusão do Arquivo?', mtWarning, [mbOK, mbCancel],0)=mrok) then

begin

codigo := intTostr(Adoquery1codigo.Value);

Adoquery1.Close;

Adoquery1.SQL.Clear;

Adoquery1.SQL.add('delete from cliente where codigo='''+codigo+'''');

Adoquery1.ExecSQL;

Adoquery1.Close;

Adoquery1.SQL.Clear;

Adoquery1.SQL.Add('select * from cliente');

Adoquery1.Open;

end;

A resposta do sistema é:

Tipos de dados imcompativeis na expressão de critério

Quem puder ajudar antecipo meus agradecimentos

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá

Você pode excluir registro do banco de dados sem esse monte de código ai, use apenas isso:

if ( MessageDlg('Você Confirma a Exclusão do Arquivo?', mtWarning, [mbOK, mbCancel],0)=mrok) then
  AdoQuery.Delete;
Ou se prefere utilizar da forma que você esta fazendo, use da seguinte maneira:
procedure TForm2.BitBtn4Click(Sender: TObject);
var codigo: string;
begin
  if ( MessageDlg('Você Confirma a Exclusão do Arquivo?', mtWarning, [mbOK, mbCancel],0)=mrok) then 
  begin
    codigo := intTostr(Adoquery1codigo.Value);
    Adoquery1.Close;
    Adoquery1.SQL.Clear; 
    Adoquery1.SQL.add('delete from cliente where codigo=[b]'+IntToStr(Cod));[/b]
    Adoquery1.ExecSQL;
    Adoquery1.Close;
  end;
  Adoquery1.SQL.Clear;
  Adoquery1.SQL.Add('select * from cliente');
  Adoquery1.Open;
end;

Veja que na hora de chamar a variável dentro da SQL mesmo sendo ela Integer e o campo do banco de dados sendo número você deve transforma ela para integer também, pelo menos é o que eu faço para poder dar certo.

Mas lembrando que eu não utilizo essa segunda maneira e sim a primeira, pois é bem mais simples e faz o mesmo resultado.

Abraços...

Alexandre

Link para o comentário
Compartilhar em outros sites

  • 0
Olá pessoal, estou tendo problemas para excluir arquivos no banco de dados access utilizando o componente ado, a chave primária do arquivo é de auto numeração, e o comando que estou utilizando é esse

procedure TForm2.BitBtn4Click(Sender: TObject);

var

codigo: string;

begin

if ( MessageDlg('Você Confirma a Exclusão do Arquivo?', mtWarning, [mbOK, mbCancel],0)=mrok) then

begin

(...)

end;

eder lucio, pela passagem grifada acima e pela mensagem no seu código, devo lhe chamar a atenção para o fato de voce estar utilizando o termo erradamente. O que você deseja é: "excluir REGISTROS do banco de dados", não o arquivo.

Também em banco de dados, ainda que fosse referente ao seu "arquivo" clientes, você estaria falando na TABELA clientes.

É importante utilizar os termos corretos para que todos possamos nos entender a cerca do que falamos.

Você pode excluir registro do banco de dados sem esse monte de código ai, use apenas isso:

if ( MessageDlg('Você Confirma a Exclusão do Arquivo?', mtWarning, [mbOK, mbCancel],0)=mrok) then
  AdoQuery.Delete;
apenas completando, para não gerar confusão ao colega eder lucio, este caso pressupõe que o registro em questão esteja "selecinado" (posicionado) adequadamente no dataset AdoQuery. Este método da classe TDataSet elimina apenas o registro corrente, ou seja, apenas o atual (somente 1 registro). Se fosse o caso de remover vários registros com uma mesma condição, seria necessário chamá-lo "n" vezes. Por exemplo, eliminar todos os pagamentos do cliente 335 (vamos supor que ele tenha mais que um pagamento realizado): 1) Utilizando o método Delete do DataSet:
Adoquery1.SQL.Clear;
  Adoquery1.SQL.add('SELECT * FROM PAGTOS WHERE COD_CLIENTE = 335'); 
  Adoquery1.Open;
  where not Adoquery1.EOF do
    Adoquery1.Delete;

  Adoquery1.Close;
2) Utilizando a instrução DELETE do SQL:
Adoquery1.SQL.Clear;
  Adoquery1.SQL.add('DELETE FROM PAGTOS WHERE  COD_CLIENTE = 335');
  Adoquery1.ExecSQL;

Nestes casos, este último método seria preferível ao primeiro.

Observe também, que o Close só é utilizado quando executado o Open. O uso de instruções SQL que requerem sua execução via ExecSQL, não "abrem" o dataset.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...