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

Deletar Varios Registro Do Bd Usando Instrução Sql ?


maxm.ro

Pergunta

tenho que deletar alguns dados aqui...

Código:

DataModule1.ADOQryHistorico.close;

DataModule1.ADOQryHistorico.SQL.Text:='DELETE * FROM historico WHERE codigo_cli_mov = '+Edit3.Text+' ORDER BY codigo_mov';

DataModule1.ADOQryHistorico.Open;

coloquei esse codigo ai pra fazer um teste mas não funcionou ....

deu o seguinte erro !

Ponto e virgula Faltando no final da instru~ção SQL!!!

verifiquei certinho mas parece não estar faltando nada...

alguém sabe se é possiavel deletar desta forma ????

atenciosamente,

..max

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

BLZA CARA, MAS AGORA DEU ERRO DE SINTAXE NA CLAUSULA FROM

DataModule1.ADOQryHistorico.close;

DataModule1.ADOQryHistorico.SQL.Add('select * FROM historico WHERE codigo_cli_mov = '+EdtCodCli.Text+'');

DataModule1.ADOQryHistorico.Open;

ESSE AI O CODIGO...

SE PUDER AJUDAR AGRADEÇO.....

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Jonas --
BLZA CARA, MAS AGORA DEU ERRO DE SINTAXE NA CLAUSULA FROM

DataModule1.ADOQryHistorico.close;

DataModule1.ADOQryHistorico.SQL.Add('select * FROM historico WHERE codigo_cli_mov = '+EdtCodCli.Text+'');

DataModule1.ADOQryHistorico.Open;

ESSE AI O CODIGO...

SE PUDER AJUDAR AGRADEÇO.....

so se codigo_cli_mov for string

DataModule1.ADOQryHistorico.SQL.Add('select * FROM historico WHERE codigo_cli_mov = '+trim(EdtCodCli.Text));

Link para o comentário
Compartilhar em outros sites

  • 0

Tenta isso.

datamodule1.ADOQryHistorico.first;
while not DataModule1.ADOQryHistorico.oef do
begin
if datamodule1.ADOqryHistorico.Fieldbyname('codigo_Cli_mov').value = EditCodCli.text then
 begin
 datamodule1.tabela1.locate(Codigo_Cli_mov,editCodCli.text,[]);
 datamodule1.tabela1.delete;
 datamodule1.tabela1.next;
 end;
end;
ou tenta isso,
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('delete * from tabela where Codigo_Cli_mov = EditCodCli.text');
Query1.Open;
Verifica se o "Codigo_cli_mov" estar como "Integer" se Tiver no criterio fica assim
Strtoint(EditCodCli.text)

Link para o comentário
Compartilhar em outros sites

  • 0

tentei de todos os modos que foram passados acima mas não deu certo...

acho que o banco de dados em access que ñão da suprte para apagar varios ccampos de uma só vez, porque coloquei esse codigo:

StrToInt(EdtCodCli.Text);

DataModule1.ADOQryHistorico.Close;

DataModule1.ADOQryHistorico.SQL.Clear;

DataModule1.ADOQryHistorico.SQL.Text:= 'DELETE * FROM Historico WHERE codigo_cli_mov = '+EdtCodCli.Text+'';

DataModule1.ADOQryHistorico.Open;

e ele me retornou o seguinte erro :

O provedor atual não oferece suporte para retornar varios conjuntos de registro de uma unica execução.

ADOQRYHistorico: ComandText does not return a result set.

tentei também assim :

DataModule1.ADOQryHistorico.SQL.Add('DELETE * FROM Historico WHERE codigo_cli_mov = '+EdtCodCli.Text+' ');

e da o mesmo erro....

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
tentei de todos os modos que foram passados acima mas não deu certo...

acho que o banco de dados em access que ñão da suprte para apagar varios ccampos de uma só vez, porque coloquei esse codigo:

StrToInt(EdtCodCli.Text);

DataModule1.ADOQryHistorico.Close;

DataModule1.ADOQryHistorico.SQL.Clear;

DataModule1.ADOQryHistorico.SQL.Text:= 'DELETE * FROM Historico WHERE codigo_cli_mov = '+EdtCodCli.Text+'';

DataModule1.ADOQryHistorico.Open;

e ele me retornou o seguinte erro :

O provedor atual não oferece suporte para retornar varios conjuntos de registro de uma unica execução.

ADOQRYHistorico: ComandText does not return a result set.

tentei também assim :

DataModule1.ADOQryHistorico.SQL.Add('DELETE * FROM Historico WHERE codigo_cli_mov = '+EdtCodCli.Text+' ');

e da o mesmo erro....

bom você pode apagar os dados de uma só vez, porém um de cada vez, na mesma função

sacou?

por exemplo assim:

DataModule1.ADOQryHistorico.Close;
    DataModule1.ADOQryHistorico.SQL.Clear;
    DataModule1.ADOQryHistorico.SQL.Text:= 'SELECT * FROM Historico WHERE codigo_cli_mov = '+EdtCodCli.Text;
    DataModule1.ADOQryHistorico.Open;
    DataModule1.ADOQryHistorico.First;
    for i := 0 to (DataModule1.ADOQryHistorico.RecordCount-1) do begin
      DataModule1.ADOQryHistorico.Delete;
      DataModule1.ADOQryHistorico.ApplyUpdates;
      DataModule1.ADOQryHistorico.Close;
      DataModule1.ADOQryHistorico.Open;
      DataModule1.ADOQryHistorico.First;
    end;

as ultimas 3 linhas:

DataModule1.ADOQryHistorico.Close;

DataModule1.ADOQryHistorico.Open;

DataModule1.ADOQryHistorico.First;

eu não sei se é necessario mesmo, pois ao deletar, automaticamente o proximo campo se torna o primeiro

mas eu botei só pra garantir

testa ai e ve se funciona

abraço!!

Link para o comentário
Compartilhar em outros sites

  • 0

blza problema RESOLVIDO ......

o codigo foi esse ai:

procedure TFRelHistorico.SbLimparClick(Sender: TObject);
begin
     If application.MessageBox( 'Tem certeza de que deseja Limpar todo o histórico do cliente selecionado?','Informação',MB_YESNO)=mryes then
     begin
          If application.MessageBox( 'Você esta Prestes a apagar o histórico do cliente selecionado! Deseja Continuar?','Informação',MB_YESNO)=mryes then
          begin
              DSRelHistorico.DataSet.First;

                while not DSRelHistorico.DataSet.Eof do
                begin
                      if DataModule1.ADOQryHistorico.FieldByName('codigo_cli_mov').Value = Cod_Cli then begin
                          datamodule1.ADOQryHistorico.locate('Codigo_Cli_mov',Cod_Cli,[]);
                          DataModule1.ADOQryHistorico.Delete;
                      end;
               DSRelHistorico.DataSet.Next;

               end;
               DataModule1.ADOQryHistorico.Delete;
               ShowMessage('O Histórico do cliente foi limpo com sucesso!');
           end;
     end;      
end;

obrigado pela ajuda ......

Editado por Micheus
Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização
Link para o comentário
Compartilhar em outros sites

  • 0
BLZA CARA, MAS AGORA DEU ERRO DE SINTAXE NA CLAUSULA FROM

DataModule1.ADOQryHistorico.close;

DataModule1.ADOQryHistorico.SQL.Add('select * FROM historico WHERE codigo_cli_mov = '+EdtCodCli.Text+'');

DataModule1.ADOQryHistorico.Open;

não justifica o erro, mas aqui você utilizou um SELECT ao invés de DELETE.

tentei de todos os modos que foram passados acima mas não deu certo...

acho que o banco de dados em access que ñão da suprte para apagar varios ccampos de uma só vez, porque coloquei esse codigo:

StrToInt(EdtCodCli.Text);

DataModule1.ADOQryHistorico.Close;

DataModule1.ADOQryHistorico.SQL.Clear;

DataModule1.ADOQryHistorico.SQL.Text:= 'DELETE * FROM Historico WHERE codigo_cli_mov = '+EdtCodCli.Text+'';

DataModule1.ADOQryHistorico.Open;

e ele me retornou o seguinte erro :

O provedor atual não oferece suporte para retornar varios conjuntos de registro de uma unica execução.

ADOQRYHistorico: ComandText does not return a result set.

O problema não é com o SQL, e o MSAccess dá suporte sim exclusão de vários registros sim.

Para quem deseja utilizar comandos como DELETE, UPDATE e INSERT tenham em mente que o método a ser utilizado não é Open, mas sim ExecSQL:

DataModule1.ADOQryHistorico.Close;
    DataModule1.ADOQryHistorico.SQL.Clear;
    DataModule1.ADOQryHistorico.SQL.Text:= 'DELETE * FROM Historico WHERE codigo_cli_mov = '+EdtCodCli.Text+'';
    DataModule1.ADOQryHistorico.ExecSQL;

Sugiro utilizar este comando ao invés de todas aquelas linhas implementadas.

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...