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 :

Accès base de données Access oledb


Sujet :

MFC

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut Accès base de données Access oledb
    Bonjour,

    je n'y connais absolument rien en base de données
    J'ai une base Access avec des tables
    et je voudrais y accéder afin de lire les données qu'elle contient, faire des requêtes... mais je ne sais pas du tout comment partir
    Je développe mon application en C++ sous Visual Studio 2006 (pas en .Net)
    et voudrais utiliser oledb
    J'ai créé des accesseurs Jet OLE DB sur mes tables, mais je ne sais pas quoi en faire (ni même si c'est la bonne démarche...)

    Pourriez-vous m'aider?
    ou bien m'indiquer de bons tuto?...


    Merci

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Tu as ce tutoriel sur ODBC en C. C'est du C mais ça peut te servir de point d'entrée pour en comprendre les mécanismes. Les MFC sont plus ou moins des wrapper.
    Ensuite, côté MFC, il faut regarder CDatabase, CRecordset...
    Côté FAQ, tu as aussi des entrées intéressantes.
    Bon courage

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Salut 3DArchi,
    merci pour ces infos

    Par contre, tout ça, c'est de l'ODBC
    Quelle est la différence avec l'OLEDB?
    est-ce la même approche??
    Que dois-je faire de mes accesseurs? vont-ils me servir??

    à +

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Alors,

    j'me suis lancée...
    J'ai essayé de créer une classe avec une variable membre CDatabase
    j'ai donc mis un
    mais quand je compile,
    ça me sort
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monFichier.cpp
    c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxv_32.h(16) : fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>
    alors que je n'ai pas mis de #include <windows.h> dans ledit fichier...

    Je ne vois pas du tout, qu'est-ce qu'il se passe donc??
    Quelqu'un pourrait-il m'aider??

    Merci

  5. #5
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Tu as pensé à mettre le fichier d'en-tête précompilé avant ?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 499
    Points : 218
    Points
    218
    Par défaut
    Eh bien, il me semble que oui pourtant...

    Mais du coup, j'ai laissé tomber...
    pour me pencher plus vers ces accesseurs que j'ai créé...

    A l'aide de l'assistance de création de classe de visual studio,
    j'ai créé, pour chaque des tables de ma base, un accesseur : Consommateur OLE DB ATL de type Microsoft.Jet.OLEDB.4.0,
    ça me donne un truc de ce genre :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    #ifndef __REPERESPHYSIQUES_H_
    #define __REPERESPHYSIQUES_H_
     
    class CReperesPhysiquesAccessor
    {
    public:
    	TCHAR m_Description[51];
    	TCHAR m_EUUnits[51];
    	LONG m_ID;
    	VARIANT_BOOL m_EnAcqPermanente;
    	VARIANT_BOOL m_Monitor;
    	TCHAR m_Name[51];
    	LONG m_ParentID;
    	LONG m_Sequence;
    	LONG m_Type;
    	LONG m_Nature;
    	LONG m_TypePhysique;
    	LONG m_RangBit;
    	LONG m_Adresse;
    	LONG m_UPC;
     
    BEGIN_COLUMN_MAP(CReperesPhysiquesAccessor)
    	COLUMN_ENTRY(1, m_ID)
    	COLUMN_ENTRY(2, m_ParentID)
    	COLUMN_ENTRY(3, m_Name)
    	COLUMN_ENTRY(4, m_Sequence)
    	COLUMN_ENTRY_TYPE(5, DBTYPE_BOOL, m_Monitor)
    	COLUMN_ENTRY_TYPE(6, DBTYPE_BOOL, m_EnAcqPermanente)
    	COLUMN_ENTRY(7, m_EUUnits)
    	COLUMN_ENTRY(8, m_Description)
    	COLUMN_ENTRY(9, m_Type)
    	COLUMN_ENTRY(10, m_Nature)
    	COLUMN_ENTRY(11, m_TypePhysique)
    	COLUMN_ENTRY(12, m_RangBit)
    	COLUMN_ENTRY(13, m_Adresse)
    	COLUMN_ENTRY(14, m_UPC)
    END_COLUMN_MAP()
     
    	// You may wish to call this function if you are inserting a record and wish to
    	// initialize all the fields, if you are not going to explicitly set all of them.
    	void ClearRecord()
    	{
    		memset(this, 0, sizeof(*this));
    	}
    };
     
    class CReperesPhysiques : public CCommand<CAccessor<CReperesPhysiquesAccessor> >
    {
    public:
    	HRESULT Open()
    	{
    		HRESULT		hr;
     
    		hr = OpenDataSource();
    		if (FAILED(hr))
    			return hr;
     
    		return OpenRowset();
    	}
    	HRESULT OpenDataSource()
    	{
    		HRESULT		hr;
    		CDataSource db;
    		CDBPropSet	dbinit(DBPROPSET_DBINIT);
     
    		dbinit.AddProperty(DBPROP_AUTH_CACHE_AUTHINFO, true);
    		dbinit.AddProperty(DBPROP_AUTH_ENCRYPT_PASSWORD, false);
    		dbinit.AddProperty(DBPROP_AUTH_MASK_PASSWORD, false);
    		dbinit.AddProperty(DBPROP_AUTH_PASSWORD, OLESTR(""));
    		dbinit.AddProperty(DBPROP_AUTH_USERID, OLESTR("Admin"));
    		dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR("D:\\MonRepertoireDeTravail\\CommonFiles\\Database.mdb"));
    		dbinit.AddProperty(DBPROP_INIT_MODE, (long)16);
    		dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
    		dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR(""));
    		dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);
    		dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
    		hr = db.Open(_T("Microsoft.Jet.OLEDB.4.0"), &dbinit);
    		if (FAILED(hr))
    			return hr;
     
    		return m_session.Open(db);
    	}
    	HRESULT OpenRowset()
    	{
    		return CCommand<CAccessor<CReperesPhysiquesAccessor> >::Open(m_session);
    	}
    	CSession	m_session;
    };
     
    #endif // __REPERESPHYSIQUES_H_
    Mais le souci, c'est que comme je n'y connais rien,
    je ne vois pas quelles méthodes peuvent m'être utile pour pouvoir créer des requêtes et récupérer des données de ma base...

    Quelles sont les classes de base?
    que je puisse trouver les bonnes infos sur msdn...


    Je ne sais pas si je vais trouver des réponses dans ce post,
    du coup, je vais peut être en créer un nouveau avec un titre plus approprié...

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par melleb Voir le message
    Quelles sont les classes de base?
    que je puisse trouver les bonnes infos sur msdn...
    CDataBase, CRecordset
    Data Access Programming

Discussions similaires

  1. Problème accès base de données Access
    Par Jesus_Cry dans le forum JDBC
    Réponses: 12
    Dernier message: 01/01/2014, 12h47
  2. Réponses: 3
    Dernier message: 08/10/2009, 06h53
  3. Acces Base de donnée Access dans un combobox
    Par freko dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 25/10/2007, 12h10
  4. Accès Base de données Access
    Par vincent magnin dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/06/2006, 12h09
  5. Réponses: 15
    Dernier message: 25/10/2004, 11h50

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