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 :

[MFC] [CRecordset] Problème avec Excel


Sujet :

MFC

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Points : 118
    Points
    118
    Par défaut [MFC] [CRecordset] Problème avec Excel
    Salut tout le monde !

    J'ai des données sur lesquelles je dois faire des opérations de lecture / écriture qui sont impérativement stockées dans une feuille EXCEL.

    Pour l'exemple, les données de ma feuille EXCEL sont simplifiées, la première colonne contient des prénoms et la deuxième contient des noms. La case A1 est nommée PRENOM et B1 est nommée NOM.

    J'ai regardé dans la FAQ et j'ai fait comme indiqué :
    1 - Crétion d'un DSN fichier
    2 - Utilisation dans mon application d'un object de la classe CDatabase pour se connecter / déconnecter à la source de données
    3 - Création d'une lasse dérivée de CRecordset et nommée CIndividu

    ... jusqu'au 2- ça tourne, j'arrive à me connecter / déconnecter, et fort de cette réussite (je sais, vous me direz qu'il ne faut pas grand chose pour être content mais bon, c'est déjà ça non ? ) je me suis attaqué à la suite ... et là, c'est le drame !

    L'assistant de création de classe me demande de sélectionner les tables de ma source de données ... mais la liste des propositions est vide.

    Petite précision : je suis un newby en base de données

    J'en arrive à mes questions :
    : Est il possible de se connecter à une source de données, pour un accès en lecture et écriture (je crois avoir lu quelque part qu'il existait certaines restrictions avec ODBC pour les accès en écriture, c'st pour ça que je demande), lorsque cette dernière est une feuille EXCEL ?
    : Dois utiliser une convention particulière pour le nommage des colonnes et des classeurs de ma feuille ESCEL ?
    : Est il possible d'accéder à une feuile particulière dans un document EXCEL lorsque celui ci en possède plusieurs ?
    : Pouvez vous me donner un exemple de requête SQL me permettant d'extraire toutes les données (PRENOM et NOM), que je puisse valider la communication entre mon application et la source de données ?

    D'avance merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,moi je fais un truc dans ce style:
    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
     
    CDatabase database;
    CString sSql;	
    CString sDsn;
     
    sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile);
    database.Open(NULL,false,false,sDsn);
     
    CRecordset recset( &database );
     
    CString pTableName="["+m_strTable+"$]"; 
    CString sss=pTableName; 
    sSql.Format("Select * \r\nFrom %s ",(const char *)sss); 
     
    recset.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);
    while( !recset.IsEOF() )
    {
    //.....
    m_strTable== le nom de l'onglet de la feuille excel.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Points : 118
    Points
    118
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sDsn.Format("ODBC;DRIVER={%s};DSN='';DBQ=%s",sDriver,sFile);
    Et tu mets quoi dans sDriver et sFile ?

    Il est possible de venir écrire dans la feuille EXCEL aussi ou est ce qu'il existe des restrictions ?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    re,
    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
     
    CString GetExcelDriver()
    {
    	char szBuf[2001];
    	WORD cbBufMax = 2000;
    	WORD cbBufOut;
    	char *pszBuf = szBuf;
    	CString sDriver;
     
     
       if(!SQLGetInstalledDrivers(szBuf,cbBufMax,& cbBufOut)) return "";	
       do
       {
    	if( strstr( pszBuf, "Excel" ) != 0 )
    	{
     
      	     sDriver = CString( pszBuf );
    	     break;
    	}
    	pszBuf = strchr( pszBuf, '\0' ) + 1;
       }
       while( pszBuf[1] != '\0' );
     
       return sDriver;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	sDriver = GetExcelDriver();
    	if( sDriver.IsEmpty() )
    	{
    		AfxMessageBox("Aucun driver Excel présent !!!");
    		return FALSE;
    	}
            CString sFile ="myFile.xls";

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2002
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 225
    Points : 118
    Points
    118
    Par défaut
    ok, merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec Excel et tableau croisé dynamique
    Par françois62 dans le forum VBScript
    Réponses: 9
    Dernier message: 19/11/2006, 22h17
  2. [MFC] [VS2005] Probléme avec le Style XP (? !)
    Par Exsilius dans le forum MFC
    Réponses: 2
    Dernier message: 28/03/2006, 10h28
  3. [MFC][CMap] Problème avec Lookup
    Par MystEre dans le forum MFC
    Réponses: 6
    Dernier message: 27/12/2005, 11h00
  4. [MFC] Débutant : Problème avec OnPaint()
    Par ZaaN dans le forum MFC
    Réponses: 14
    Dernier message: 05/12/2005, 13h15
  5. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00

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