maxm.ro Postado Julho 30, 2007 Denunciar Share Postado Julho 30, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Julho 30, 2007 Denunciar Share Postado Julho 30, 2007 cara, tira o Order By. não existe Order By em Delete. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 maxm.ro Postado Julho 30, 2007 Autor Denunciar Share Postado Julho 30, 2007 BLZA CARA, MAS AGORA DEU ERRO DE SINTAXE NA CLAUSULA FROMDataModule1.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..... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Jonas -- Postado Julho 30, 2007 Denunciar Share Postado Julho 30, 2007 BLZA CARA, MAS AGORA DEU ERRO DE SINTAXE NA CLAUSULA FROMDataModule1.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 stringDataModule1.ADOQryHistorico.SQL.Add('select * FROM historico WHERE codigo_cli_mov = '+trim(EdtCodCli.Text)); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Julho 30, 2007 Denunciar Share Postado Julho 30, 2007 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) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 maxm.ro Postado Julho 30, 2007 Autor Denunciar Share Postado Julho 30, 2007 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.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --felipe -- Postado Julho 30, 2007 Denunciar Share Postado Julho 30, 2007 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çãosacou?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 primeiromas eu botei só pra garantirtesta ai e ve se funcionaabraço!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 maxm.ro Postado Julho 30, 2007 Autor Denunciar Share Postado Julho 30, 2007 (editado) 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 Julho 31, 2007 por Micheus Adicionado o delimitador de código [code] [/code]. Lembre-se de utilizá-lo para melhor visualização Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --felipe -- Postado Julho 30, 2007 Denunciar Share Postado Julho 30, 2007 bom pelo menos a idéia foi utilizadaeheuiehiehuieé isso ai =D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Julho 31, 2007 Denunciar Share Postado Julho 31, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
maxm.ro
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
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.