Jump to content
Fórum Script Brasil
  • 0

Ado


Guest eder lucio
 Share

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...