Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1541 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Erreur ODBC] Etat du curseur non valide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Erreur ODBC] Etat du curseur non valide

n°514924
fabriceMer​c
Posté le 15-09-2003 à 14:38:23  profilanswer
 

bonjour;
 

Code :
  1. public class ListeFamillesMetiersRqt implements IListeFamillesMetiersRqt,
  2.                                                 ListeFamillesMetiersEnum {
  3. private final String LOG_FILE = "log_accesbase_gpec";
  4.     public ListeFamillesMetiersRqt() {
  5.     }
  6.     public IResultatRqt chercherListeFamilles (String _anneeTravail,
  7.                                                 String _rech,
  8.            int _type_rech,
  9.            boolean _effectif,
  10.            String _typeComptage,
  11.               int _numPage,
  12.               int _nbRcdParPage) throws SQLException {
  13.  Statement stmt = null;
  14.  Connection conn = null;
  15.  ResultSet rs = null;
  16.  String requete = "";
  17.  IResultatRqt resultatRqt = null;
  18.         _rech=AutresOutils.getApostrophe(_rech);
  19.  try {
  20.   // prépare le statement
  21.      StringBuffer buf = new StringBuffer(100);
  22.   buf.append ("SELECT famille.id idfamille, famille.code codefamille, famille.des desfamille, famille.com comfamille, metier.id idmetier, metier.code codemetier, metier.des desmetier, metier.com commetier, emploi.id idemploi, emploi.code codeemploi, emploi.des desemploi, emploi.com comemploi, poste.id idposte, poste.code codeposte, poste.des desposte, poste.com composte " );
  23.   if (_effectif && _typeComptage == TYPE_COMPTAGE_POSTE) {
  24.    buf.append(",tmp.effectif effectifPoste,tmp2.effectif effectifEmploi " );
  25.   }
  26.   else if (_effectif && _typeComptage == TYPE_COMPTAGE_EMPLOI){
  27.    buf.append(",tmp2.effectif effectifEmploi " );
  28.   }
  29.   buf.append ("FROM dtable famille " );
  30.             buf.append ("LEFT OUTER JOIN dtable metier ON famille.id = metier.lien " );
  31.             buf.append ("LEFT OUTER JOIN dtable emploi ON metier.id = emploi.lien " );
  32.             buf.append ("LEFT OUTER JOIN dtable poste ON emploi.id = poste.lien " );
  33.   if (_effectif &&
  34.    (_typeComptage == TYPE_COMPTAGE_EMPLOI ||
  35.     _typeComptage == TYPE_COMPTAGE_POSTE)) {
  36.    buf.append ("LEFT OUTER JOIN ( " );
  37.          buf.append ("SELECT emploi.id emploiid, count(*) effectif " );
  38.    buf.append ("FROM dtable famille, dtable metier, dtable emploi, pers_v volet_personne " );
  39.    buf.append ("WHERE famille.nom_table = 'NOMGPE0' " );
  40.    buf.append ("AND famille.id = metier.lien " );
  41.    buf.append ("AND metier.id = emploi.lien " );
  42.    buf.append ("AND emploi.id = volet_personne.id_table " );
  43.    if (_rech.compareTo("*" ) != 0) {
  44.     if (_type_rech == PAR_FAMILLE) {
  45.      buf.append (" AND famille.des like '" );
  46.     }
  47.     else if (_type_rech == PAR_METIER) {
  48.      buf.append (" AND metier.des like '" );
  49.     }
  50.     else if (_type_rech == PAR_EMPLOI) {
  51.      buf.append (" AND emploi.des like '" );
  52.     }
  53.     else if (_type_rech == PAR_POSTE) {
  54.      buf.append (" AND poste.des like '" );
  55.     }
  56.    buf.append (_rech+"%'" );
  57.    }
  58.    buf.append ("GROUP BY emploi.id) tmp2 " );
  59.    buf.append ("ON tmp2.emploiid = emploi.id " );
  60.   }
  61.     if (_effectif && _typeComptage == TYPE_COMPTAGE_POSTE) {
  62.       buf.append ("LEFT OUTER JOIN ( " );
  63.    buf.append ("SELECT poste.id posteid, count(*) effectif " );
  64.          buf.append ("FROM dtable famille, dtable metier, dtable emploi, dtable poste, pers_v volet_personne " );
  65.          buf.append ("WHERE famille.nom_table = 'NOMGPE0' " );
  66.          buf.append ("AND famille.id = metier.lien " );
  67.       buf.append ("AND metier.id = emploi.lien " );
  68.          buf.append ("AND emploi.id = poste.lien " );
  69.          buf.append ("AND poste.id = volet_personne.id_table " );
  70.    if (_rech.compareTo("*" ) != 0) {
  71.     if (_type_rech == PAR_FAMILLE) {
  72.      buf.append (" AND famille.des like '" );
  73.     }
  74.     else if (_type_rech == PAR_METIER) {
  75.      buf.append (" AND metier.des like '" );
  76.     }
  77.     else if (_type_rech == PAR_EMPLOI) {
  78.      buf.append (" AND emploi.des like '" );
  79.     }
  80.     else if (_type_rech == PAR_POSTE) {
  81.      buf.append (" AND poste.des like '" );
  82.     }
  83.    buf.append (_rech+"%'" );
  84.    }
  85.          buf.append ("GROUP BY  poste.id ) tmp " );
  86.       buf.append ("ON tmp.posteid = poste.id " );
  87.      }
  88.   buf.append ("WHERE famille.nom_table = 'NOMGPE0' " );
  89.      if (_rech.compareTo("*" ) != 0) {
  90.    if (_type_rech == PAR_FAMILLE) {
  91.     buf.append (" AND famille.des like '" );
  92.    }
  93.    else if (_type_rech == PAR_METIER) {
  94.     buf.append (" AND metier.des like '" );
  95.    }
  96.    else if (_type_rech == PAR_EMPLOI) {
  97.     buf.append (" AND emploi.des like '" );
  98.    }
  99.    else if (_type_rech == PAR_POSTE) {
  100.     buf.append (" AND poste.des like '" );
  101.    }
  102.    buf.append (_rech+"%'" );
  103.      }
  104.   buf.append (" ORDER BY famille.des, metier.des, emploi.des, poste.des" );
  105.      requete = buf.toString();
  106.   conn = ConnectionDriver.getConnectionDriver(_anneeTravail);
  107.   stmt = conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
  108.   rs   = stmt.executeQuery(requete);
  109.   resultatRqt = new ResultatRqt (rs, _numPage, _nbRcdParPage);
  110.  }
  111.  catch (SQLException ex) {
  112.      String[] data = {MessageLogger.formatData ("Requête", requete)};
  113.      MessageLogger.writeMessage(LOG_FILE, 44, data, ex);
  114.      throw ex;
  115.     }
  116.     finally {
  117.      try {
  118.       if (stmt != null)       stmt.close();
  119.       if (conn != null)       conn.close();
  120.      }
  121.      catch (SQLException ex) {
  122.       MessageLogger.writeMessage(LOG_FILE, 45, null, ex);
  123.      }
  124.     }
  125.  return resultatRqt;
  126. }
  127. }


 
lorsque que je fait une recherche qui ne revois rien (pas d'enregistrement) dans le cas d'un comptage (c'est à dire _effectif = true), j'ai une exception généré qui me renvoie "Etat du curseur non valide".
J'ai cherché sur le net et je n'ai pas trouvé de réponse, dans l'aide de SQL serveur cette erreur est générée lorsque  
 
Dans SQL Server Enterprise Manager, vous pouvez recevoir le message d'erreur « État de curseur non valide » si Microsoft® SQL Server? manque de ressources lors d'une tentative d'enregistrement de tables sélectionnées ou d'un diagramme de base de données. Cette erreur est renvoyée en raison d'un manque d'espace dans la base de données ou dans le journal des transactions pour achever le processus d'enregistrement. Pour remédier à ce problème, vérifiez si la base de données ou le journal des transactions sont pleins.
 
je pense que l'érreur viens du fait que les select imbriqués dans les left outer join ne renvoient rien.
 
merci  
 


---------------
L'été il fait bo
mood
Publicité
Posté le 15-09-2003 à 14:38:23  profilanswer
 

n°514946
drasche
Posté le 15-09-2003 à 14:52:34  profilanswer
 

Ton diagnostic est courant chez nous, mais dans ce cas, on a cette erreur directement, et rien à propos du curseur. Ca voudrait donc dire: pas assez d'espace pour la journalisation de SQL Serveur. Faut agrandir la taille réservée au journal [:spamafote]
 
Sinon, je pense pas que tu aies une erreur à cause d'un join qui ne renvoie rien. A confirmer.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Erreur ODBC] Etat du curseur non valide

 

Sujets relatifs
MySQL erreur de syntaxeDésactiver une erreur dans un script en VBS
Flash valide en strict ?[PHP] se connecter a une base de données Access ou autre via odbc?
Erreur de compilation... [RESOLU][Résolu]Mais ou est mon erreur ???package SWING
C koi l'erreur ?[VBA-exel]Erreur de compilation Sub / erreur defini par l'application?
Batch pour suppression de fichiers erreur lors de l'exec :( [16/09][VBA] (ACCESS) "erreur de compilation - attendu Then ou goto " ...
Plus de sujets relatifs à : [Erreur ODBC] Etat du curseur non valide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR