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 :

Cours connexion base de donnee access avec visual c++ en utilisant ole db


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 116
    Points : 56
    Points
    56
    Par défaut Cours connexion base de donnee access avec visual c++ en utilisant ole db
    Bonjour a tous,
    J'ai un problème avec la connexion a la base en utilisant visual c++ 6.
    Il affiche le problème suivant (Gest.exe a rencontré un problème et doit fermer. Nous vous prions de nous excuser pour le désagrément encouru.)
    Je supprime la ligne m_pRs->open il marche mais il n'ajoute pas la donnee sur la base.
    Voila l'instruction
    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
    BOOL ExecutRequet(char* Requet)
    {
    HRESULT hr;
    CoInitialize(NULL);
    
    try {
    _ConnectionPtr m_pCon;
    
    _RecordsetPtr m_pRs;
    
    hr=m_pCon.CreateInstance(__uuidof(Connection));
    
    
    if( SUCCEEDED(hr) )
    
    hr=m_pCon->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Produit.mdb;", "","",0);
    
    hr=m_pRs.CreateInstance(__uuidof(Recordset));
    
    m_pRs->Open (Requet, _variant_t((IDispatch *) m_pCon, true),adOpenDynamic, adLockReadOnly, adCmdText);
    
    
    return true;
    }
    catch (_com_error &e) {
    AfxMessageBox(e.Description());
    return false;
    }
    
    ::CoUninitialize();
    }
    S.V.P aide moi.
    S.V.P s'il y a des cours concernant la connexion base de donnee access en visual c++ 6 en utilisant ole db sans dsn.
    Merci d'avance.

    Merci de penser à mettre la balise code, Farscape

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    salut,

    j'ai rencontré le même problème que toi, donc j' ai utilisé une autre méthode pour la connexion base de donnée , la suivante :
    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
     
    #include <afxdb.h>
     
    CDatabase *db;
    CRecordset *rs;
     
    CString ConnectionString, fournisseur, file;
    fournisseur = "MICROSOFT ACCESS DRIVER (*.mdb)";
    file = "nom_de_fichier.mdb";
        ConnectionString.Format("ODBC;Driver={%s};DSN='';DBQ=%s",fournisseur,file);
     
        db = new CDatabase();
        if(db->Open(NULL,false,false,ConnectionString,false))
        {
            MessageBox("Connexion réussie");
            rs = new CRecordset(db);
        }
        else
        {
            MessageBox("Echec de connexion");
            CDialog::OnOK();
        }
    pour les requete d'insertion , modification et suppression j'ai utilisé le syntaxe suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CString sql;
    sql.Format("INSERT INTO NomTable (Colone1,Colonn2, ....) VALUES(%d ,'%s','%s', .... )",m_VariableMembre1,m_VariableMembre2, ....);
    db->ExecuteSQL(sql);
    pour lire les donné de la base en utilise le syntaxe suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sql = "select * from NomTable";
    rs->Open(CRecordset::snapshot, sql);
    J'ai trouvé les informations utiles dans les cours et tutoriels C++ : http://cpp.developpez.com/cours/ et dans la FAQ C++ : http://cpp.developpez.com/faq/

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup.
    Comment on utilise rs->movenext.
    Comment on peut récupérer une valeur du base pour saisir dans un CEdit.
    Merci d'avance.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CString n;
    rs->GetFieldValue("VotreChamp", n); // récupère la valeur de votre champ (VotreChamp) et le copie dans la variable (n)
    rs->MoveNext(); // pour allé a la ligne suivante
    rs->Close(); // pour fermé  le RecordSet

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup.
    Il marche bien.
    Mais j'ai un problème avec la requête select. Voila mon requête :
    CString a;
    CString sql = ("select * from Client WHERE Nom='%s'",a);
    Si on ne met pas a et on fait where nom='ala' il marche bien.
    Est-ce-que la syntaxe est juste ou on change a en char.
    Merci d'avance.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 590
    Points
    41 590
    Par défaut
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CString sql;
    sql.Format("select * from Client WHERE Nom='%s'",a);

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 116
    Points : 56
    Points
    56
    Par défaut
    Merci beaucoup,beaucoup,beaucoup.
    Est-ce-que lorsque on utilise sql.format on utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rs->Open(CRecordset::snapshot, sql);
    ou autre chose.
    J'ai un probleme dans le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            while(!rs->IsEOF())
            {
        rs->GetFieldValue(1,b);
        m_EditCode.SetWindowText(b);
        rs->MoveNext();
            }
    Lorsque j'ai éliminé while(!rs->IsEOF()) il affiche le problème suivant :
    État du curseur non valide.
    Et lorsque j'ai met il ne entre pas dans le boucle while.
    Merci d'avance.

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs->GetFieldValue(1,b);
    biensur a la place de "1" tu doit mettre le nom du champ dans la table et non l'indice du colonne mais le nom

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rs->GetFieldValue("ID_E", ID);
    où "ID_E" est le nom du clonne

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

Discussions similaires

  1. comment coupler une base de donnée access avec visual basic
    Par célom dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/10/2008, 18h08
  2. Réponses: 3
    Dernier message: 11/08/2008, 11h26
  3. Réponses: 1
    Dernier message: 27/03/2008, 17h12
  4. Connexion Base de données Access avec Dreamweaver
    Par bidule123456 dans le forum ASP
    Réponses: 2
    Dernier message: 23/08/2007, 12h21

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