Deletar registros
02/12/2009
0
dm.cdsbusu.CommandText:='delete from USUARIO where codigo=codigo';
essa linha se nau me engano deve ter um parametro, mais na conseguir fazer dm.cdsbusu.Execute; me ajudem por favor! abraços....
Thiago Silva
Posts
02/12/2009
Bruno Batista
Me parece que você está utilizando ClientDataSet, é só fazer isso.
dm.cdsbusu.Delete;
com isso deletará o registro que o cursor estiver posicionado.
Atenciosamente,
Bruno Moreira Batista.
02/12/2009
Thiago Silva
02/12/2009
Bruno Batista
Então terá que posicionar o ClientDataSet de cadastro, no registro que deseja excluir.
if (DM.ClientDataSetCadastro.Locate('Chave', DM.ClientDataSetConsulta.FieldByName('CHAVE').Value,[])) then
DM.ClientDataSetCadastro.Delete;
Atenciosamente,
Bruno Moreira Batista.
02/12/2009
Thiago Silva
if (dm.cdsusu.Locate('CODIGO', dm.cdsbusu.FieldByName('CODIGO').Value,[])) then
begin
dm.cdsusu.Delete;
end; end; o q pode ser? e outra, o codigo q postei anteriormente está totalmente errado?
03/12/2009
Perivaldo Martins
então tente mudar seu código para:
dm.cdsbusu.Close;
dm.cdsbusu.CommandText:='delete from USUARIO where codigo = :codigo';
dm.cdsbusu.param.parambyname('codigo').asinteger := StrToInt(Edit1.Text);
dm.cdsbusu.Execute;
Algo mais ou menos assim, teste pq eu não testei, eu geralmente faço a exclusão usando Query.
Boa sorte e bons códigos.
07/12/2009
Thiago Silva
ao invés de ser caixa de texto com q vc colocou no parametro
mais como faço isso?
15/12/2009
Paulo Silva
dm.cdsbusu.CommandText:='delete from USUARIO where codigo = :codigo';
dm.cdsbusu.param.parambyname('codigo').asinteger := seuDBGRId.Fields[0].asinteger; dm.cdsbusu.Execute; /coloque o indice do campo no lugar do zero caso seja o primeiro pode manter o zero pois o indice é incrementado apartir do zero ^^
18/12/2009
Thiago Silva
18/12/2009
Armando Filho
uses IBODataset;
procedure Deletar(xDatabase:TIBODatabase;xTransaction:TIBOTransaction;Tabela,CampoChave,CompararCom:String;QueryRefresh:TIBOQuery;Generator:String;IniciarTransaction:Boolean=True);
var Query:TIBOQuery;
begin
if (MessageDlg('Confirma a exclusão do registro ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
begin
Query:=TIBOQuery.Create(Application.Owner);
TRY
Query.IB_Connection:=xDatabase;
Query.IB_Transaction:=xTransaction;
if(IniciarTransaction)AND(NOT xTransaction.InTransaction)then
xTransaction.StartTransaction;
Query.Close;
Query.SQL.Text:='DELETE FROM '+Tabela+' WHERE ('+CampoChave+'=:CompararCom)';
Query.ParamByName('CompararCom').AsString:=CompararCom;
Query.ExecSQL;
Query.Close;
Query.SQL.Text:='SET GENERATOR '+Generator+' TO '+IntToStr(GetMaxCampo(xDatabase,xTransaction,Tabela,CampoChave));
Query.ExecSQL;
if(IniciarTransaction)then xTransaction.Commit;
if(QueryRefresh.Active)then QueryRefresh.Refresh;
FINALLY
Query.Close;
Query.Free;
END;
end;
end;
21/12/2009
Thiago Silva
22/12/2009
Thiago Silva
CDSUsuario .CommandText := ' select * from usuario ';
CDSUsuario .Open;
CDSUsuario .Locate('CODIGO', dm.cdsbusuCODIGO.AsInteger ,[]); CDSUsuario .Delete; CDSUsuario .ApplyUpdates(-1); ------------------------- Dessa forma é pra dar certo.. das outras que nossos amigos passaram tb dá.. no caso, estou abrindo todos os registros da sua query principal, para que traga tudo que existe na tabela, e dando um locate no campo código, que no caso, deve ser sua pk.. com locate eu jogo o foco no registro da query que vc usa para efetuar transações com o banco de dados pelo codigo da query que vc usa para consultas, apos dar locate e jogar o foco, dou um delete e um applyupdates na query para efetuar a transação... O problema de se fazer desta forma, é que caso vc tenha muitoa registros na sua query, quando abrir a query principal, por estar abrindo todos os registros, irá demorar um pouco, por consequencia, sua deleção ficará lenta, mas no caso, aparentemente é pra cadastro de usuario, e dificilmente vc terá 10000 usuarios ou coisa do tipow.. então é pra vinga de boa.. Espero ter ajudado.. Sucesso.
Clique aqui para fazer login e interagir na Comunidade :)