Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

OLE DB ATL consumer C++

1 réponse
Avatar
Alexandre Bornand
Bonjour,

J'ai un problème avec Visual studio .NET 2002 SP1 lorsque j'utilise
l'assistant ATL OLEDB Consumer, je peux sélectionner ma base de données,
en l'occurence une base ACCESS il me créé les objets relatifs à la table
que je désire atteindre (Un accesseur et une autre classe qui hérite de
CTable), cependant il n'arrive pas à ouvrir la connexion avec la base,
et le même code fonctionne sous Visual studio 6.

Voici ma méthode qui ouvre la connexion et qui récupère les données

void COLEDB_MFCDlgDlg::OnBnClickedGetdata()
{
CBATIMENTS m_Batiments;
CListBox *lstData;

if(m_Batiments.OpenAll() != S_OK) {
AfxMessageBox("Erreur ouverture source de données");
return;
}

m_Batiments.MoveFirst();
lstData = (CListBox*)GetDlgItem(IDC_LSTDATA);
do {
lstData->AddString(m_Batiments.m_BATI);
} while(m_Batiments.MoveNext());
}

Est-ce que qq un à une idée ? parce que ça commence à faire un bout de
temps que je sèche la dessus et ça devient limite agaçant.

Merci pour vos réponses.

PS:

Pour envoyer un mail perso, enlever [NoSpam]

1 réponse

Avatar
Alexandre Bornand
Salut à tous,

J'ai trouvé une solution, il faut initialiser COM avant d'ouvrir la
connexion à la base de donnée.

voici la portion de code:

if (CoInitialize( NULL ) != S_OK) {
cout << "Unable to initialize COM" << endl;
return -1;
}


Salutations

Alexandre Bornand a écrit :
Bonjour,

J'ai un problème avec Visual studio .NET 2002 SP1 lorsque j'utilise
l'assistant ATL OLEDB Consumer, je peux sélectionner ma base de données,
en l'occurence une base ACCESS il me créé les objets relatifs à la table
que je désire atteindre (Un accesseur et une autre classe qui hérite de
CTable), cependant il n'arrive pas à ouvrir la connexion avec la base,
et le même code fonctionne sous Visual studio 6.

Voici ma méthode qui ouvre la connexion et qui récupère les données

void COLEDB_MFCDlgDlg::OnBnClickedGetdata()
{
CBATIMENTS m_Batiments;
CListBox *lstData;

if(m_Batiments.OpenAll() != S_OK) {
AfxMessageBox("Erreur ouverture source de données");
return;
}

m_Batiments.MoveFirst();
lstData = (CListBox*)GetDlgItem(IDC_LSTDATA);
do {
lstData->AddString(m_Batiments.m_BATI);
} while(m_Batiments.MoveNext());
}

Est-ce que qq un à une idée ? parce que ça commence à faire un bout de
temps que je sèche la dessus et ça devient limite agaçant.

Merci pour vos réponses.

PS:

Pour envoyer un mail perso, enlever [NoSpam]