Fórum Excluir Registros em ADO / SQL #243952

21/07/2004

0

- Como faço para excluir registro usando ADO / SQL e o que estar errado
na programação abaixo que não exclui:

POR FAVOR MANDE EXEMPLOS, OBRIGADO....

ADOQuery1.Close;
with ADOQuery1 do
begin
if Active then close;
SQL.Clear;
SQL.Add(´DELETE * FROM ARQUIVO´);
Open;
end;
ADOQuery1.Active := True;

- E nesta só exclui um registro mesmo com laço:

While not ADOQuery1.Eof do
begin
ADOQuery1.Delete;
ADOQuery1.Next;
End;


Canastra

Canastra

Responder

Posts

22/07/2004

Bon Jovi

Tem q usar ExecSQL.

ADOQuery1.SQL.Text := ´DELETE * FROM ARQUIVO´;
ADOQuery1.ExecSQL;


Responder

Gostei + 0

22/07/2004

Canastra

Estou usando Delphi 6 / ADO - ACCESS -Computador Win XP P4 2.8
ADO Connection = Provedor Microsoft Jet 4.0 Ole DB Provider

- Seu colocar conf. abaixo, ocorre o seguinte erro:
ADOQuery1.SQL.Add(´Delete * from Arquivo´);
ADOQuery1.SQL.Add(´Where arquivo_usuario = ´´+EdtNumero.Text+´´´);
ADOQuery1.ExecSQL;

ERROR: Syntax error in from clause

- E se eu coloco este, ocorre o seguinte:
with ADOQuery1 do
begin
if Active then close;
SQL.Clear;
SQL.Add(´DELETE * FROM ARQUIVO WHERE ARQUIVO_USUARIO LIKE ´´+EdtNumero.Text+´´´);
Open;
end;

ERROR: Oprovedor atual nao oferece suporte para retornar varios conjuntos de registros de uma unica execução


Responder

Gostei + 0

22/07/2004

Thomaz_prg

Citação
- Seu colocar conf. abaixo, ocorre o seguinte erro: 
ADOQuery1.SQL.Add(´Delete * from Arquivo´); 
ADOQuery1.SQL.Add(´Where arquivo_usuario = "´+EdtNumero.Text+´"´); 
ADOQuery1.ExecSQL; 

ERROR: Syntax error in from clause 


Este erro ocorre pois não há o uso do ´*´ no caso de delete. Mas, como o colega BonJovi já demonstrou acima, após comandos Delete, Insert, Update, Create Table, Alter Table, usa-se [b:efe6f5976b]ExecSql[/b:efe6f5976b] ao invés de [b:efe6f5976b]Open[/b:efe6f5976b]. Então o código ficaria assim:

ADOQuery1.SQL.Add(´Delete from Arquivo´); 
ADOQuery1.SQL.Add(´Where arquivo_usuario = ´+EdtNumero.Text); 
ADOQuery1.ExecSQL; 


Mas não entendi uma coisa. Se o seu campo [color=red:efe6f5976b]arquivo_usuario[/color:efe6f5976b] for um valor numérico (Numero, Moeda, Etc), o código acima funciona, mas se for texto (texto, caracter, memo), use assim:

ADOQuery1.SQL.Add(´Delete from Arquivo´); 
ADOQuery1.SQL.Add(´Where arquivo_usuario like ´+EdtNumero.Text); 
ADOQuery1.ExecSQL; 


Digo isso pois vc estava usando Aspas ao redor do valor do EditNumero.Text, dando a impressão de ser um valor caracter, porém se for caracter usa-se a instrução [b:efe6f5976b]Like[/b:efe6f5976b] ao invés do sinal de igual. Porém, se for numérico, apenas desconsidere as aspas e use o sinal de igual, como citei acima.


Responder

Gostei + 0

22/07/2004

Canastra

- O campo EdtNumero é string,mas só recebe numero é que na Tabela é Integer.
- Tjomaz_prg Coloque sem o uso ´ * ´ e não funcionou e continuou dando o mesmo error.
- Mas eu coloquei o mesmo e acrestando as linhas, Close e SQL.Clear funcionou.

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(´Delete from Arquivo´);
ADOQuery1.SQL.Add(´Where arquivo_usuario = ´+EdtNumero.Text);
ADOQuery1.ExecSQL;

O B R I G A D O . . . . . . . . . . .


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar