Bonjour a tous,
Je veux ajouter un champ référence dans une base de donnée access que j'ai l'appelé Produit.mdb.

Dans l'evenement de bouton ajouter, j'ai inserer le requete sql.
j'ai un seul champ textfield.

voila la fonction de bouton
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
#include "Manip.h"
void CGestView::OnAjouter() 
{
    // TODO: Add your control notification handler code here
    
                    char text[10];

                    
                    m_Editstatic.GetWindowText(text, 10);

                    char p[1024];
        
            sprintf(p,"INSERT INTO Produit(Ref) VALUES('%s')",text);

                if (ExecutRequet(p))
            {        
        MessageBox ("Le produit a été bien enregistré.");        
            }            
}
Dans Manip.h il y a l'initialisation de la fonction ExecutRequet
BOOL ExecutRequet(char* Requet);

et dans Manip.cpp il y a la fonction ExecutRequet qui permet la connexion
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
 
#include "StdAfx.h"
#include "Manip.h"
#define TAILLE_BUFFER 1024
CHAR szBuffer[TAILLE_BUFFER];
 
BOOL ExecutRequet(char* Requet)
{
    CoInitialize(NULL);
   try {
 
        _ConnectionPtr pConn("ADODB.Connection");
        _RecordsetPtr pRst("ADODB.Recordset");
 
        pConn->Mode = adModeShareExclusive;
        pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Produit.mdb", "", "", 0);
      // Note 1.
        pRst->Open(Requet, _variant_t((IDispatch *) pConn, true),  adOpenDynamic, adLockReadOnly, adCmdText);
        //pRst->Close();
       return true;
        }
   catch (_com_error &e) {
 AfxMessageBox(e.Description());
      return false;
   }   
 
   ::CoUninitialize();
}
Dans le fichier StdAfx.h il y a la connecxion avec les fichiers dll
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
 #include <math.h>
#import "c:\Program Files\Fichiers communs\system\ado\msado15.dll" no_namespace rename("EOF", "EndOfFile")
#import "C:\Program Files\Fichiers communs\System\Ole DB\Oledb32.dll" no_namespace rename("EOF", "EndOfFile")
#define TAILLE_BUFFER 1024
J'ai copie Produit.mdb dans le repertoire Gest et dans Gest\Debug.

Il affiche 0 error mais dans l'execution il affiche le resultat de la fonction qui est dans catch (AfxMessageBox(e.Description()).
Quelle est l'erreur je ne sais pas.
Merci d'avance.