[ADO C++]Execution instruction oracle error

Fermé
rixan Messages postés 414 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 1 mars 2019 - 30 janv. 2008 à 15:23
rixan Messages postés 414 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 1 mars 2019 - 13 févr. 2008 à 13:11
Bonjour,

Je précise que je travaille avec Oracle

J'ai ce code:
if (m_pConnection->State == adStateOpen)
{
USES_CONVERSION;
strQuery.Format(_T("SELECT COUNT(*) AS %s FROM user_tables WHERE table_name = '%s'"), strFieldName, W2T(a_wstrTableName.c_str()));
_variant_t varRowsAffected;
_RecordsetPtr rs = m_pConnection->Execute(strQuery.GetString(), &varRowsAffected, adOptionUnspecified);

if (! rs->BOF || ! rs->adoEOF)
{
rs->MoveFirst();
_variant_t varValue = rs->Fields->Item[T2W(strFieldName.GetString())]->Value;

bRes = CUtils::GetIntFromVariant(varValue) == 1;
}
}

Le problème c'est que ce COUNT(*) retourne rs = 0 VT_INT.

Je copie alors la chaîne strQuery à partir de son espion et je le teste sous SQL+ de Oracle Client : ça marche très bien et ça retourne 1 !!
Quel est bien donc mon soucis ?

2 réponses

phil232 Messages postés 607 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 31 janvier 2008 178
30 janv. 2008 à 16:21
rs->Fields[0]->Value

ça donne la même chose ?
0
rixan Messages postés 414 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 1 mars 2019 43
13 févr. 2008 à 13:11
Merci phil232 pour ton intervention mais la solution que j'ai trouvée est :

SELECT COUNT(*) AS %s FROM user_tables WHERE table_name = '%s' and owner = '%s'

Là l'unicité du résultat retourné est assuré !

VIVA C++ !!
0