Voici mon code, ba en fait, l'interpretation de ma requete est déja dans un try catch !
m_strRequete="SELECT STATUT FROM UTILISATEUR WHERE ID_CARTE=3128";
_RecordsetPtr m_pRecordSet=m_pDialog->m_MaBase.ExecuteSql(m_strRequete); // J'execute ma requete, je stocke le recordset.
///////////////////////////////////////////////////////////////////////////////////////////
//////// JE TRAITE MON RECORDSET AFIN DE SAVOIR LE STATUT DE L'UTILISATEUR ////////////////
///////////////////////////////////////////////////////////////////////////////////////////
TESTHR(m_pRecordSet.CreateInstance(__uuidof(Recordset)));//On crée un recordset vide:
try
{
_variant_t var;// variable pour récupérer des données du recordset
m_pRecordSet->PutRefActiveConnection( m_pDialog->m_MaBase.GetPtrConnection()); // Type de connection
// GetPtrConnection me sert à récupérer le pointeur sur ma connection
m_pRecordSet->Open((LPCTSTR)m_strRequete, vtMissing, adOpenDynamic,adLockBatchOptimistic, -1); // Requete SQL
m_pRecordSet->MoveFirst(); // Initialisation du recordset
///////////////////////////////////////////////////////////////////////////////////
///// Je récupère le statut de l'utilisateur et le stocke dans m_nStatut //////
///////////////////////////////////////////////////////////////////////////////////
while (!m_pRecordSet->EndOfFile) // Tant que la fin du recordset n'est pas atteinte
{
var=m_pRecordSet->Fields->GetItem((long)0)->Value; // Récupération de la valeure du recordset
CString strStatut=(LPCTSTR)_bstr_t(var); // On CASTE la valeur vers un CString
m_pRecordSet->MoveNext(); // lecture de l'index suivant du recordset.
if (strStatut=="M") // Le statut de l'utilisateur est "Maintenance"
m_nStatut=0;
if (strStatut=="P")// Le statut de l'utilisateur est "Professeur"
m_nStatut=1;
if (strStatut=="E")// Le statut de l'utilisateur est "Eleve"
m_nStatut=2;
}
}
catch(_com_error) // Si erreur durant l'interpretation du recordset
{
MessageBox(0,"Erreur au niveau du recordset, impossible de connaitre le statut","ERREUR",MB_OK);
}