GARANTIR DESCONTO

Fórum Query... Tem como fazer isso??? #287107

05/07/2005

0

Galera, é o seguinte:
como faço pra excluir os registros na tabela, mas informando quantos registros eu quero deletar...
tipo assim:
dm.qryExemplares.SQL.Clear;
dm.qryExemplares.Sql.Add(´SELECT * FROM Tabela1´);
dm.qryExemplares.Sql.Add(´WHERE controle=:0´);
dm.qryExemplares.Parameters[0].Value:=cod;
dm.qryExemplares.Open;

digamos que essa query retorne 5 resultados...
e na query abaixo eu vou deletar todos esses resultados...
dm.qryDeletar.SQL.Clear;
dm.qryDeletar.Sql.Add(´DELETE * FROM Tabela1´);
dm.qryDeletar.Sql.Add(´WHERE controle = :0´);
dm.qryDeletar.Parameters[0].Value:=dm.tbTabela2id.Value;
dm.qryDeletar.ExecSQL;

como eu faço pra ao invés de deletar todos os resultados dessa tabela eu deletar 3, por exemplo... ou uma quantidade qualquer, informada...
obrigado desde ja a ajuda!


Raphael.sx

Raphael.sx

Responder

Posts

06/07/2005

Khundalini

A única maneira de fazer isso é limitando o valor das chaves, pois assim vc saberá determinar a quantidade de registros que vc quer excluir. E desse jeito, fica bem genérico e válido pra qualquer banco de dados.

[]s
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

06/07/2005

Sma

Existe no MySQL a funçao LIMIT onde eu posso determinar a quantidada de registro que quero trazer para a query, eu não tentei executar mas vc poderia tentar executar...

Ex..
dm.qryDeletar.SQL.Clear;
dm.qryDeletar.Sql.Add(´DELETE * FROM Tabela1´);
dm.qryDeletar.Sql.Add(´WHERE controle = :0´);
dm.qryDeletar.Sql.Add(´LIMIT 3´);
dm.qryDeletar.Parameters[0].Value:=dm.tbTabela2id.Value;
dm.qryDeletar.ExecSQL;

desta forma ele apenas deleta os 3 primeiros registros...


Responder

Gostei + 0

06/07/2005

Khundalini

Mas o banco que está sendo usado é o MySQL? Por isso que eu prefiro a minha sugestão, por ser mais genérica.

[]s
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

06/07/2005

Raphael.sx

por favor Khundalini, me da um exemplo de como fazer da maneira que vc disse.


Responder

Gostei + 0

06/07/2005

Khundalini

Cara, é pq eu tô meio sem tempo agora, senão eu codificaria alguma coisa sobre isso. Mas a idéia é essa. A dica pra pescar o peixe foi passada!

[]s
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

06/07/2005

Cabelo

Galera, é o seguinte: como faço pra excluir os registros na tabela, mas informando quantos registros eu quero deletar... tipo assim:
dm.qryExemplares.SQL.Clear;
dm.qryExemplares.Sql.Add(´SELECT * FROM Tabela1´);
dm.qryExemplares.Sql.Add(´WHERE controle=:0´);
dm.qryExemplares.Parameters[0].Value:=cod;
dm.qryExemplares.Open;
digamos que essa query retorne 5 resultados... e na query abaixo eu vou deletar todos esses resultados...
dm.qryDeletar.SQL.Clear;
dm.qryDeletar.Sql.Add(´DELETE * FROM Tabela1´);
dm.qryDeletar.Sql.Add(´WHERE controle = :0´);
dm.qryDeletar.Parameters[0].Value:=dm.tbTabela2id.Value;
dm.qryDeletar.ExecSQL;
como eu faço pra ao invés de deletar todos os resultados dessa tabela eu deletar 3, por exemplo... ou uma quantidade qualquer, informada... obrigado desde ja a ajuda!


Esta exclusão é aleatória, ou você deseja excluir registros selecionados..

Outra coisa.. Você quer que seja um SQL, para executar direto no banco ou pode ser via delphi???


Responder

Gostei + 0

06/07/2005

Raphael.sx

caro Cabelo, o código seria executado via delphi mesmo... e exluiria registros selecionados...
obrigado pela atenção!


Responder

Gostei + 0

06/07/2005

Tremonti

Existe no SQL o Conhecido Select Top 1 FRom Tabela

onde 1 é quantidade de registro que vc quer trazer...

Bom, o que vc pode fazer é se caso o resultado da query seja exibido em um DBGrid, criar um campo (calculado, pode ser), onde no onDblClick do DBGrid vocÊ coloque o valor para ´X´

E colocar um botao, excluir selecionados por exemplo
onde ele dará um loop na tabela e apagar somente os que o campo tal seja = ´X´

Seria mais ou menos assim
tabela.first
While not Tabela.first do
Begin
if TabelaCAmpo.value = ´X´ Then
TAbela.Delete;
Tabela.next;
End;
Tabela.First

e no onDBLCLick
Tabela.Edit;
If TabelaCAmpo.VAlue = ´X´ Then
TabelaCampo.value = ´´
Else
TabelaCampo.value = ´X´


Existem algumas considerações referentes a cada tipo de componente para conexão que vc usar....

POr exemplo, se usar BDE precisaria de um Update e dar um Apply depois, e assim vai...


Responder

Gostei + 0

06/07/2005

Raphael.sx

não funcionou!! ajuda!!


Responder

Gostei + 0

07/07/2005

Ivanh

No firebird pode fazer esta procedure:

SET TERM ^ ;

CREATE PROCEDURE NEW_PROCEDURE (
QTDEEXCLUIR INTEGER)
AS
DECLARE VARIABLE CODIGO INTEGER;
BEGIN
FOR
SELECT FIRST :QTDEEXCLUIR CODIGO FROM TABELA
INTO :CODIGO;
DO
BEGIN
DELETE FROM TABELA
WHERE CODIGO = :CODIGO;
END
END
^

SET TERM ; ^


Responder

Gostei + 0

08/07/2005

Tremonti

Não funcionou pq?!
O que vc fez?!


Responder

Gostei + 0

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

Aceitar