Excluir Registros em ADO / SQL
- 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;
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
Curtidas 0
Respostas
Bon Jovi
21/07/2004
Tem q usar ExecSQL.
ADOQuery1.SQL.Text := ´DELETE * FROM ARQUIVO´;
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Text := ´DELETE * FROM ARQUIVO´;
ADOQuery1.ExecSQL;
GOSTEI 0
Canastra
21/07/2004
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
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
GOSTEI 0
Thomaz_prg
21/07/2004
Citação
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:
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:
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.
- 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.
GOSTEI 0
Canastra
21/07/2004
- 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 . . . . . . . . . . .
- 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 . . . . . . . . . . .
GOSTEI 0