IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[OLE DB] pourquoi ca marche pas ??


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut [OLE DB] pourquoi ca marche pas ??
    Bonjour,

    Je suis a la quete d'une reponse au probleme suivant :

    Comment, sous ole db recuperer les enregistrements generes a la suite de la commande suivante :

    select T1.ID_MS, T2.VAR_NAME,T2.VAR_TYPE, T2.VAR_GROUP from T1,T2 where T1.MS_TYPE=T2.MS_TYPE

    Pour info, voila comment je procede actuellement -ce qui ne fonctionne pas-:

    Un accesseur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class CMsAccessor
    {
    public:
        LONG m_ID_MS;
        TCHAR m_VAR_TYPE[10];
        TCHAR m_VAR_NAME[50];
        TCHAR m_VAR_GROUP[5];
     
     
    BEGIN_COLUMN_MAP(CMsAccessor)
        COLUMN_ENTRY(1, m_ID_MS)
        COLUMN_ENTRY(2, m_VAR_TYPE)
        COLUMN_ENTRY(3, m_VAR_NAME)
    	COLUMN_ENTRY(4, m_VAR_GROUP)
    END_COLUMN_MAP()
    };
    Et, dans la classe qui effectue la requete SQL precedente :
    (code a l'arrache pour les tests...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    void COracleDb::GetList()
    {
      HRESULT hr;
     
      char* pFileName = "test.txt";
      CStdioFile f1;
      if( !f1.Open( pFileName, CFile::modeCreate
    		   | CFile::modeWrite | CFile::typeText ) ) {
       #ifdef _DEBUG
         afxDump << "Unable to open file" << "\n";
       #endif
       exit( 1 );
      }
     
        if( OpenOraDb("db","user","passwd") ) {
     
         hr = m_dbSession.Open(m_ds);
     
          if(SUCCEEDED(hr)) {
            // The session is now open
            CCommand<CAccessor<CMsAccessor>, CRowset> dbCommand;
     
            // DBPROPSET_ROWSET : Properties for rowset 
            CDBPropSet propset(DBPROPSET_ROWSET);
            propset.AddProperty(DBPROP_CANHOLDROWS, true);
     
            // Select all records from selected table
            CString sCommand;
            sCommand = "select T1.ID_MS, T2.VAR_NAME,T2.VAR_TYPE, T2.VAR_GROUP from T1,T2 where T1.MS_TYPE=T2.MS_TYPE";
     
            hr = dbCommand.Create(m_dbSession, (LPCTSTR)sCommand);
            if(SUCCEEDED(hr)) {
               hr = dbCommand.Open(&propset, NULL, true);
               if(SUCCEEDED(hr)) {
                  // Use the rowset
                  CString csStr;
                  CMsAccessor data;
     
                  while (dbCommand.MoveNext() == S_OK) {
                     dbCommand.GetDataHere(&data);
                     csStr.Format("\n +%d | %s | %s | %s",data.m_MS_TYPE,data.m_VAR_GROUP,data.m_VAR_NAME,data.m_VAR_TYPE);
                     TRACE(csStr);
                     f1.WriteString(csStr);
                  }
               }
          }
          m_dbSession.Close();
        }
        m_ds.Close();
      }
     
      f1.Close();
     
    }

    En faisant comme precedemment, il n'y a aucun enreistrements de disponibles (le while sort de suite) alors que si copie la requete SQL et que je l'execute avec un outil oracle, ce dernier me renvoie des enregistrements!!!!

    Merci de vos indications...

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut [OLE DB] pourquoi ca marche pas ??
    Personne n'a d'idees ????

  3. #3
    Membre habitué
    Inscrit en
    Avril 2002
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 180
    Points : 157
    Points
    157
    Par défaut
    Ne devrait t-il pas y avoir une dbCommand.MoveFirst() avant la boucle while(dbCommand.MoveNext()==S_OK){...} ???!!!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2005
    Messages : 26
    Points : 14
    Points
    14
    Par défaut [OLE DB] pourquoi ca marche pas ??
    Merci pour l'info, Philippe V,

    Mais cela ne fait strictement rien...
    Par contre, j'ai modifie mon accesseur pour qu'il prenne en compte tous les champs des deux tables, j'ai modifie egalement la commande SQl par :


    select * from T1,T2 where T1.MS_TYPE=T2.MS_TYPE


    et la ca fonctionne !!!

    Malheureusement, l'ensemble des champs des tables T1 et T2 ne m'interresse pas : trop de données inutilisees => pas tres propre et ralentit l'application...

    Quelqu'un aurait-il LA solution ????

    Merci !!!

Discussions similaires

  1. [POO] Pourquoi ca marche pas ? onLoad & onUnload...
    Par vincent68 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/07/2007, 21h18
  2. [MySQL] 2 boucles sur une requête, pourquoi ça marche pas?
    Par MisterMacPhisto dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/04/2007, 12h32
  3. Pourquoi ca marche pas :-(
    Par Flushovsky dans le forum Langage
    Réponses: 3
    Dernier message: 20/12/2005, 17h55
  4. Comprends pas pourquoi ca marche pas
    Par cellimo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/11/2005, 22h10
  5. Accept : pourquoi ça marche pas ?
    Par doudblast dans le forum Linux
    Réponses: 16
    Dernier message: 08/03/2005, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo