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

Visual C++ Discussion :

OpenSchema retournant NULL sous ADO


Sujet :

Visual C++

  1. #1
    Membre extr�mement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par d�faut Le probl�me n'est plus OpenSchema qui retourne NULL
    Bonjour,

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    int CHowToADOView::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        HRESULT hr = m_pConnection.CreateInstance(__uuidof(ADODB::Connection));
        if (FAILED(hr))
    	 {
    		AfxMessageBox(_T("CREATE CONNECTION INSTANCE ERROR !!!"));
    	 }
        m_pConnection->CursorLocation = ADODB::adUseClient;
        HRESULT hr2 = m_pConnection->Open(L"Provider=MSDAORA.1;Password=systemtest1;User ID=system;Data Source=test1sid_10.12.1.2;Persist Security Info=True", L"",L"", ADODB::adConnectUnspecified);
        if (FAILED(hr2))
    	 {
    		AfxMessageBox(_T("OPEN CONNECTION ERROR !!!"));
    	 }
        return 0;
    }
     
    void CHowToADOView::OnBnClickedOpenschema2()
    {
        // open it
        try
        {
            _variant_t vSourceSchema = L"MYSCHEMA";
            _variant_t vSource = L"TABLE1";
     
            _variant_t varCriteria[3];
            _variant_t vtNull;
            vtNull.vt = VT_NULL;
            varCriteria[0] = vtNull;
            varCriteria[1] = vtNull;
            varCriteria[2] = vSource;
     
            // Creating a safe array of variants with 3 elements.
            VARIANT varData;
            SAFEARRAY FAR* psa;
            SAFEARRAYBOUND rgsabound[1];
            rgsabound[0].lLbound = 0;
            rgsabound[0].cElements = 3;
            psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);
     
            // Fill the safe array.
            for(long lIndex = 0 ; lIndex < 3 ;lIndex++)
            {
                SafeArrayPutElement(psa, &lIndex,&varCriteria[lIndex]);
            }
     
            // Initialize the safearray.
            varData.vt = VT_VARIANT | VT_ARRAY;
            V_ARRAY(&varData) = psa;
     
            ADODB::_RecordsetPtr tempRS;
            tempRS = NULL;
            tempRS.CreateInstance( __uuidof( ADODB::Recordset ) );
            tempRS = m_pConnection->OpenSchema(ADODB::adSchemaColumns,varData);
            if (!(tempRS->GetADOEOF()))
                AfxMessageBox(_T("IL Y QUELQUES CHOSES DANS tempRS"));
            else
                AfxMessageBox(_T("IL N'Y A RIEN DANS tempRS"));
        }
        catch (_com_error& e) 
        {
            CString str = (CString)(e.Description().GetBSTR()) +"\r\n"+ (CString)(e.ErrorMessage());
            AfxMessageBox(str);
        }
    }
    Comme vu dans le code, j'utilise OpenSchema sur une base de donn�es ORACLE. Bof ! Apr�s cette fonction, une exception est imm�diatement d�tect�e par le try...catch... Et si je mets pour test varData = vtNull, pas d'exception mais le recordset retourn� ne contient rien (adoEOF = true).
    Est-ce que OpenSchema(adSchemaColumns) ne marche pas pour Oracle ? Vu dans l'aide MSDN (http://technet.microsoft.com/en-us/l.../ms974585.aspx), il n'indique rien en ce qui concerne Oracle seulement pour ole db, vsam et AS400 !!
    randriano.dvp.com
    D�veloppeur. Product Owner [Agile]. Sites web, mobile apps, syst�me d'information (SI).

  2. #2
    Membre extr�mement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par d�faut
    Une personne qui a un peu d'exp�rience en Oracle-VC++ pourrait surement m'aider !
    Je remarque aussi qu'en Oracle, le concept de bd est tellement diff�rent que toutes les tables de tous les sch�mas sont retourn�s dans le recordset

    Nouveau titre appropri� : Probl�me avec OpenSchema(adSchemaColumns) sous Oracle
    En fait, que dois contenir le 2� argument "Criteria" ?
    randriano.dvp.com
    D�veloppeur. Product Owner [Agile]. Sites web, mobile apps, syst�me d'information (SI).

  3. #3
    bruce-willis
    Invit�(e)
    Par d�faut
    adSchemaColumns retourne les colonnes des tables d�finies dans le catalogue.
    Le 2�me argument (criteria) est optionnel qui est un tableau de contraintes query comme celui indiqu�
    adSchemaColumns
    TABLE_CATALOG (varCriteria[0])
    TABLE_SCHEMA (varCriteria[1]) : nom de base de donn�es
    TABLE_NAME (varCriteria[2]) : nom de table
    COLUMN_NAME (varCriteria[3]) : nom de champ

    Cela marche tr�s bien sous SQL Server mais je ne sais pas pour Oracle
    Je ne suis qu'un d�butant en ADO aussi !!!

  4. #4
    Membre extr�mement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par d�faut
    Bonjour !

    Je me r�ponds � moi-m�me dans ce thread.
    Il semble qu'il n'est pas compatible avec Oracle de faire OpenSchema(ADODB::adSchemaColumns, varData). Ironie du sort, j'ai obtenu la r�ponse � ma question en posant la question chez les Basic-iens (forum Visual Basic): http://www.developpez.net/forums/sho...d.php?t=491908
    Les informations que bruce-willis a donn�es sont correctes mais c'est Oracle qui fait faux-bond mais il faut quand m�me admettre que Microsoft a con�u ADO sp�cialement pour ces plate-formes : SQL Server et Access.
    Je r�capitule la solution : ex�cuter directement la commande sql �quivalente
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    tempRS->Open(L"SELECT COLUMN_NAME, NULLABLE, DATA_TYPE, CHAR_LENGTH FROM all_tab_columns tc WHERE tc.OWNER = \'RANDRIANO\' AND tc.TABLE_NAME = \'MYTABLE\'", m_connDb.GetInterfacePtr(), adOpenForwardOnly, adLockReadOnly, adCmdText);
    randriano.dvp.com
    D�veloppeur. Product Owner [Agile]. Sites web, mobile apps, syst�me d'information (SI).

  5. #5
    Membre extr�mement actif
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 221
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 221
    Par d�faut
    Re-bonjour,

    Je m'adresse aux utilisateurs d'ADO pour se connecter si le fait qu'ado n'est pas si compatible que �a avec certains sgbd est vrai. Pouvez-vous vous manifester pour confirmer ou nier �a
    randriano.dvp.com
    D�veloppeur. Product Owner [Agile]. Sites web, mobile apps, syst�me d'information (SI).

Discussions similaires

  1. LEFT JOIN + Sous-requ�te retourne "NULL"
    Par wenijah dans le forum Requ�tes
    R�ponses: 6
    Dernier message: 23/03/2012, 17h02
  2. op�rateur + dans SELECT retourne null ?
    Par david_chardonnet dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 19/01/2007, 10h47
  3. donn�es NULL sous SQL
    Par pschmidtke dans le forum Requ�tes et SQL.
    R�ponses: 3
    Dernier message: 05/07/2006, 18h14
  4. acc�s aux BD sous ADO
    Par loubardi dans le forum VB 6 et ant�rieur
    R�ponses: 2
    Dernier message: 23/06/2006, 10h32
  5. J�ai un souci avec les valeurs null sous sql server.
    Par zoltix dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 20/06/2006, 10h27

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