Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    VC++6.0 e ADO. Come posso ottenere l'elenco esatto delle tabelle in un DB Access?

    Ho un'applicazione in VC++ 6.0. Sto utilizzando la modalità ADO per l'accesso
    ad un DB di Access.
    Come ottengo l'elenco completo delle tabelle all'interno del DB?


  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Cerca su google come si utilizza il metodo

    OpenSchema

    dell'oggetto Connection.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Sempre preziosi i tuoi suggerimenti, se poi ti trovassi del codice già pronto per l'uso sarebbe il massimo

    Mi risparmieresti un bel pò di lavoro non solo nella ricerca ma nell'adattamento alle mie esigenze...


  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Grazie, me lo studio ed appena mi funziona posto il codice a beneficio degli altri utenti...



  6. #6
    Se non ho dimenticato qualche dichiaritiva nel riportare il codice questo è quanto detto....


    #include "stdafx.h"
    #import "c:\Programmi\File Comuni\SYSTEM\ADO\msado15.dll" no_namespace rename("EOF","EndOfFile") // 2° Rigo



    ................................
    ................................


    CoInitialize(NULL);


    _ConnectionPtr pCon("ADODB.Connection");
    _RecordsetPtr pRs1("ADODB.Recordset" );


    CString csTemp, NomeTab;
    _variant_t varCriteria[4];
    _bstr_t codice, strCnn;
    LONG lIndex = 0, NTab = 0;
    HRESULT hr = 0;

    try
    {

    _bstr_t bstrTableType("Table");

    varCriteria[0].vt = VT_EMPTY;
    varCriteria[1].vt = VT_EMPTY;
    varCriteria[2].vt = VT_EMPTY;
    varCriteria[3] = bstrTableType;

    VARIANT varData;
    SAFEARRAY FAR* psa;
    SAFEARRAYBOUND rgsabound[1];
    rgsabound[0].lLbound = 0;
    rgsabound[0].cElements = 4;
    psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);

    // Fill the safe array.
    for ( lIndex = 0; lIndex < 4; lIndex++)
    {
    hr = SafeArrayPutElement(psa, &lIndex,&varCriteria[lIndex]);
    }
    // Initialize variant with safearray.
    varData.vt = VT_VARIANT | VT_ARRAY;
    V_ARRAY(&varData) = psa;


    // Stringa di connessione DSN-Less con un database ACCESS
    strTmp.Format ( "Driver={Microsoft Access Driver (*.mdb)};"
    "Dbq=%s; "
    "Uid=; Pwd=; "
    "Security Info=True", mio_database); //File *.mdb

    _bstr_t strCnn(strTmp); //Converto da CString a _bstr_t
    strCnn += " (_bstr_t)";


    pCon->Open(strCnn, "", "", adConnectUnspecified); //Apro la Connessione al database


    pRs1 = pCon->OpenSchema(adSchemaTables, varData);

    int nFieldCount = pRs1->Fields->GetCount();
    VARIANT varValue;

    csTemp.Empty();
    while ( VARIANT_TRUE != pRs1->EndOfFile ) //while (VARIANT_TRUE != Rs1->GetadoEOF())
    {

    // Traversing through the Fields collection to get the values.
    if ( !csTemp.IsEmpty() )
    csTemp += " ; ";

    varValue = pRs1->Fields->GetItem(_variant_t((long)2))->Value;
    if ( varValue.vt == VT_BSTR )
    {
    //csTemp += varValue.bstrVal;
    NomeTab = varValue.bstrVal;
    NTab++;
    }
    else
    if ( varValue.vt == VT_UI4)
    csTemp.Format("%s %l",csTemp,varValue.lVal);

    pRs1->MoveNext();

    }
    OutputDebugString(csTemp);


    pRs1->Close(); //Chiudo connessione al recordset
    pCon->Close(); //Chiudo la connessione al database

    }
    catch(_com_error &exception)
    {
    // Exception handling.

    _bstr_t codice;
    TCHAR szFinal[256];

    memset ( szFinal, '\0', 256 );

    codice = (_bstr_t)exception.Description();
    _stprintf(szFinal, _T("%s"), (LPCTSTR)codice);
    CString Err;
    Err.Format ( "Errore: %s", szFinal );
    AfxMessageBox( Err );

    }


    // libero la memoria utilizzata da COM
    CoUninitialize();


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.