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 :

Acceder à une base access via visual C++


Sujet :

MFC

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 1
    Par défaut Acceder à une base access via visual C++
    Savez vous comment 'acceder à une base access via visual C++ ?

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2005
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 513
    Par défaut
    en utilisant le composant ODBC (Open Date Base Connectivity), voici trois fonctions qui te permettrons de faire énorment de chose avec ta base de donnée:

    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
    // creation de l'environnement ODBC
    int OdbcConnEnvCreate()
    {
    	SQLRETURN retcd;
     
    	retcd = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
     
    	if(retcd & 0xFFFE) 
    		return 0;
     
    	retcd = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
     
    	if(retcd & 0xFFFE) 
    		goto envOut;
     
    	retcd = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hconn);
     
    	if(!(retcd & 0xFFFE)) 
    		return 1;
     
    envOut:
    	SQLFreeHandle(SQL_HANDLE_ENV, henv);
    	return 0;
    }
    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
    // Connection à la base Access
    int OdbcMdbConnect(int bReadOnly, char* dbname, char* dbpwd)
    { // dbname et dbpwd en options
      // dbpwd pris en compte SI dbname est fourni
    	SQLRETURN retcd;
    	char *c;
     
    	if(bReadOnly) 
    		SQLSetConnectAttr(hconn, SQL_ATTR_ACCESS_MODE, (SQLPOINTER)SQL_MODE_READ_ONLY, 0);
     
    	c = bnstrcpy(szbuff, "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=");
     
    	if(dbname)
    	{
    		if(dbname[0])
    		{
    			c = bnstrcpy(c, dbname);
    			if(dbpwd)
    			{
    				if(dbpwd[0])
    				{
    					*c = ';'; *(c+1) = 'P'; *(c+2) = 'W'; *(c+3) = 'D'; *(c+4) = '=';
    					c = bnstrcpy(c+5, dbpwd);
    				}
    			}
    		}
    	}
     
    	retcd = SQLDriverConnect(hconn, 0, (SQLCHAR*)szbuff, c - szbuff, 0, 0, 0, SQL_DRIVER_COMPLETE_REQUIRED);
    	return ((retcd & 0xFFFE) == 0);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Fonction permettant d'effectuer des requêtes
    int OdbcExecAction(char *pszqry) // RETOURNE != 0 SI ERREUR
    {
    	SQLHANDLE hstmt;
     
    	retcd = SQLAllocHandle(SQL_HANDLE_STMT, hconn, &hstmt);
     
    	if(retcd & 0xFFFE) 
    		return 1; // ERREUR
     
    	retcd = SQLExecDirect(hstmt, (SQLCHAR*)pszqry, 60);
    	SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
    	return (retcd & 0xFFFE);
    }
    et tu utilises les fonctions comme ceci:
    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
    					// creation environnement ODBC
    					if(OdbcConnEnvCreate())
    					{
    						if(OdbcMdbConnect(0, szFile, 0))
    						{
    							// ACTION
    							OdbcExecAction(requete); // execution de la requete
     
    							SQLDisconnect(hconn); // deconnection
     
    							// liberation de memoire
    							SQLFreeHandle(SQL_HANDLE_DBC, hconn);
    							SQLFreeHandle(SQL_HANDLE_ENV, henv);
    						}
               }

    voila les fonctions sont directement utilisable...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par défaut
    Si tu es débutant et que tu utilise les MFC je te conseille d'aller chercher une lib ADOLIB.LIB qui encapsule une classe complete DAO te permettant a n'avoir a gerer pratiquement que tes requetes SQL.
    Cordialement

  4. #4
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    Et la

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut
    je voulais savoir ou est ce que je pourrais me procurer ADOLIB.LIB.
    Merci !!

Discussions similaires

  1. [AC-2003] Copie de sauvegarde d'une base Access via VBA
    Par CC25 dans le forum VBA Access
    Réponses: 4
    Dernier message: 22/04/2010, 20h06
  2. Multithread sur une Base Access via ODBC
    Par jagboys dans le forum MFC
    Réponses: 6
    Dernier message: 12/03/2009, 11h19
  3. [ODBC] remplir une base access via une page php
    Par sonia06 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/05/2008, 16h26
  4. [WEB]Partage d'une base Access Via Internet
    Par MARYSOU dans le forum Access
    Réponses: 17
    Dernier message: 03/05/2007, 16h37
  5. Interroger une base access via le web
    Par pascale86 dans le forum Access
    Réponses: 1
    Dernier message: 15/03/2007, 15h33

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