Fórum ENoResultSet - Error creating cursor handle #258945

18/11/2004

0

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

Responder

Posts

18/11/2004

Bruno_fantin

Posta o codigo....


Responder

Gostei + 0

18/11/2004

Emerson Nascimento

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.


Responder

Gostei + 0

19/11/2004

Fellyne

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;


Responder

Gostei + 0

19/11/2004

Fellyne

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;



Responder

Gostei + 0

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

Aceitar