ENoResultSet - Error creating cursor handle
Eu estou deletando registros de uma tabela, mas antes do registro ser excluído aparece esta mensagem: ENoResultSet with message ´Error creating cursor handle´
Se alguém puder me dar uma luz eu agradeço.
Sabrina :D
Se alguém puder me dar uma luz eu agradeço.
Sabrina :D
Fellyne
Curtidas 0
Respostas
Bruno_fantin
18/11/2004
Posta o codigo....
GOSTEI 0
Emerson Nascimento
18/11/2004
provavelmente é via SQL.
se for, não utilize OPEN. open deve ser utilizado quando há retorno de registros (resultset). no seu caso deve ser ExecSQL ou Execute. depende do componente utilizado.
se for, não utilize OPEN. open deve ser utilizado quando há retorno de registros (resultset). no seu caso deve ser ExecSQL ou Execute. depende do componente utilizado.
GOSTEI 0
Fellyne
18/11/2004
procedure TFrmClasseGenerica.SBtnDeletarClick(Sender: TObject);
var
CodCG:String;
CGen,CSub,CC1,CC2,CC3,CC4,CC5:String;
C_Gen_Aux:Integer;
qryNRegistros: TQuery;
begin
if MessageDlg(´Deseja realmente remover a Classe Genérica ?´, mtConfirmation, [mbYes, mbNo], 0) = mrNo then
begin
Abort;
Screen.Cursor := crDefault;
end
else
begin
CodCG :=FrmDtM.TblClasse_gen.FieldByName(´Cod_Gen_Classe´).AsString;
qryNRegistros := TQuery.Create(Screen.ActiveForm);
qryNRegistros.DatabaseName := ´Museu´;
qryNRegistros.SQL.Clear;
consulta := ´SELECT Cod_Gen_Classe ´
+ ´FROM Clas_Sub Where Cod_Gen_Classe = ´´´
+ CodCG + ´´´ ORDER BY Cod_Gen_Classe´;
qryNRegistros.SQL.Add(consulta);
qryNRegistros.Open;
if (qryNRegistros.recordcount = 0) then
begin
FrmDtm.TblClasse_gen.Locate(´Cod_Gen_Classe´,CodCG,[loCaseInsensitive]);
FrmDtm.TblClasse_gen.Delete; //linha onde gera a mensagem de erro
FrmDtm.TblClasse_gen.Close;
FrmDtm.TblClasse_gen.Open;
//Screen.Cursor := crDefault;
exit;
end
else
begin
if (qryNRegistros.Recordcount > 0) then
begin
showMessage(´Esta Classe Genérica possui uma(s) Sub Classe(s).´+chr(13)+´Exclua a(s) Sub Classe(s) relacionada(s) e´+chr(13)+´depois exclua a Classe Genérica.´+chr(13)+´Classe relacionada:´+CSub);
exit;
end;
end;
end;
end;
var
CodCG:String;
CGen,CSub,CC1,CC2,CC3,CC4,CC5:String;
C_Gen_Aux:Integer;
qryNRegistros: TQuery;
begin
if MessageDlg(´Deseja realmente remover a Classe Genérica ?´, mtConfirmation, [mbYes, mbNo], 0) = mrNo then
begin
Abort;
Screen.Cursor := crDefault;
end
else
begin
CodCG :=FrmDtM.TblClasse_gen.FieldByName(´Cod_Gen_Classe´).AsString;
qryNRegistros := TQuery.Create(Screen.ActiveForm);
qryNRegistros.DatabaseName := ´Museu´;
qryNRegistros.SQL.Clear;
consulta := ´SELECT Cod_Gen_Classe ´
+ ´FROM Clas_Sub Where Cod_Gen_Classe = ´´´
+ CodCG + ´´´ ORDER BY Cod_Gen_Classe´;
qryNRegistros.SQL.Add(consulta);
qryNRegistros.Open;
if (qryNRegistros.recordcount = 0) then
begin
FrmDtm.TblClasse_gen.Locate(´Cod_Gen_Classe´,CodCG,[loCaseInsensitive]);
FrmDtm.TblClasse_gen.Delete; //linha onde gera a mensagem de erro
FrmDtm.TblClasse_gen.Close;
FrmDtm.TblClasse_gen.Open;
//Screen.Cursor := crDefault;
exit;
end
else
begin
if (qryNRegistros.Recordcount > 0) then
begin
showMessage(´Esta Classe Genérica possui uma(s) Sub Classe(s).´+chr(13)+´Exclua a(s) Sub Classe(s) relacionada(s) e´+chr(13)+´depois exclua a Classe Genérica.´+chr(13)+´Classe relacionada:´+CSub);
exit;
end;
end;
end;
end;
GOSTEI 0
Fellyne
18/11/2004
Bem , vou postar aqui o resultado do meu código com o problema resolvido pq na pesquisa vi que muita gente teve o mesmo problema, eu antes estava usando o tradicional delete : FrmDtm.TblClasse_gen.Delete; e era nessa linha que dava o erro, eu troquei p/ SQL usando o ExecSQL : qryNRegistros.ExecSQL; e funcionou...
Grata pela colaboração! :D :D :D :D e aí vai o código:
Grata pela colaboração! :D :D :D :D e aí vai o código:
If MessageBox(Handle, ´Tem certeza que deseja excluir esta Classe Genérica?´, ´Confirmar Exclusão de Classe Genérica´, Mb_YesNo + Mb_IconQuestion + Mb_DefButton2) = IdYes Then begin CodCG :=FrmDtM.TblClasse_gen.FieldByName(´Cod_Gen_Classe´).AsString; qryNRegistros := TQuery.Create(Screen.ActiveForm); qryNRegistros.DatabaseName := ´Museu´; qryNRegistros.SQL.Clear; consulta := ´SELECT Cod_Gen_Classe ´ + ´FROM Clas_Sub Where Cod_Gen_Classe = ´´´ + CodCG + ´´´ ORDER BY Cod_Gen_Classe´; qryNRegistros.SQL.Add(consulta); qryNRegistros.Open; if (qryNRegistros.recordcount = 0) then begin qryNRegistros := TQuery.Create(Screen.ActiveForm); qryNRegistros.DatabaseName := ´Museu´; qryNRegistros.SQL.Clear; del := ´DELETE ´ + ´FROM Clas_Gen Where Cod_Gen_Classe = ´´´ + CodCG + ´´´ ´; qryNRegistros.SQL.Add(del); qryNRegistros.ExecSQL; FrmDtm.TblClasse_gen.Close; FrmDtm.TblClasse_gen.Open; exit; end;
GOSTEI 0