ENoResultSet - Error creating cursor handle

Delphi

18/11/2004

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


Fellyne

Fellyne

Curtidas 0

Respostas

Bruno_fantin

Bruno_fantin

18/11/2004

Posta o codigo....


GOSTEI 0
Emerson Nascimento

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.


GOSTEI 0
Fellyne

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;


GOSTEI 0
Fellyne

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:

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
POSTAR