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/ADO] Pb insertion d'enregistrement ?


Sujet :

MFC

  1. #1
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 564
    Par défaut [MFC/ADO] Pb insertion d'enregistrement ?
    Bonjour à tous.

    Je développe une petite appli avec VC 6.0 en utilisant les MFC. J'utilise un base de données Access 2000 et ADO pour l'accés à ma base (via la directive #import .... msado15.dll). Dans une table qui comprend 1 ou plusieurs enregistrements je peux éditer, modifier, supprimer et même insérer de nouveaux enregistrement, par contre j'ai une table qui ne contient aucun enregistrement et je ne peux pas insérer un nouvel enregistrement.

    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
    BOOL CDataDlg::OnInitDialog() 
    {
    	HRESULT hr = NOERROR;
     
    	CDialog::OnInitDialog();
     
    	try
    	{
    		m_pRs.CreateInstance(__uuidof(Recordset));
     
    		// La requête est du genre "SELECT Champ1, Champ2 FROM Table"
    		m_pRs->Open((LPCTSTR)m_strCmdText, (LPCTSTR)m_strConnection, adOpenDynamic, adLockOptimistic, adCmdText);
     
    		if (FAILED(hr = m_pRs->QueryInterface(__uuidof(IADORecordBinding), (LPVOID *)&m_piAdoRecordBinding)))
    			_com_issue_error(hr);
    		if (FAILED(hr = m_piAdoRecordBinding->BindToRecordset(this)))
    			_com_issue_error(hr);
     
    		// Test si le jeu d'enregistrement est vide, s'il est vide on créer un nouvel enregistrement vierge
    		if (m_pRs->BOF == -1 && m_pRs->EndOfFile == -1)
    		{
    			AddNew ();
    		}
     
    		else
    			RefreshBoundData();
    	}
     
    	catch (_com_error &e)
    	{
    		GenerateError(e.Error(), e.Description());
    	}
     
    	return TRUE;	
    }
     
    void CDataDlg::AddNew ()
    {
    	try
    	{
    		m_piAdoRecordBinding -> Update (this);
     
    		if (m_pRs->Supports(adAddNew))
    		{
    			NewBlanckRecord ();
    			m_piAdoRecordBinding -> AddNew (this);
    			m_pRs->MoveLast ();
    		}
    	}
     
    	catch (_com_error &e)
    	{
    		GenerateError(e.Error(), e.Description());
    	}
    }
    Est ce que quelqu'un peu m'aider ? Merci.

  2. #2
    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
    Quel code impressionnant pour effectuer une simple insertion d'enregistrement!!!

    Est-ce qu'il n'y a pas plus simple? (sans le support explicite de COM avec ADO).

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 564
    Par défaut
    Merci mais ta réponse ne m'aide pas du tout. Je sais qu'il existe des solutions beaucoup plus simples pour accéder aux données (je pense à ADO.NET) mais je travail avec Visual C++ 6.0 pour ce projet. Les deux technologies les plus détaillées sur le net et dans les livres pour accéder aux données avec les MFC son ODBC et ADO. Mais tous les exemples que j'ai étudé comportent toujours des tables remplies de données et moi je veux utiliser un table vide afin d'insérer un nouvel enregistrement. En fait je voudrais avoir plus de renseignements sur l'interface IADORecordBinding.

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/11/2005, 13h44
  2. insertion d'enregistrement avec MySQL Administrator
    Par Lady_jade dans le forum Outils
    Réponses: 1
    Dernier message: 08/09/2005, 16h04
  3. [MFC] ADO et operateur delete
    Par 0xYg3n3 dans le forum MFC
    Réponses: 9
    Dernier message: 26/03/2005, 14h38
  4. [DW MX2004] formulaire d'insertion d'enregistrement
    Par jiraya_sama dans le forum Dreamweaver
    Réponses: 2
    Dernier message: 30/12/2004, 17h54
  5. [MFC] ADO connection
    Par philippe V dans le forum MFC
    Réponses: 3
    Dernier message: 10/06/2002, 07h36

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