Connection.open su app access o database

di il
4 risposte

Connection.open su app access o database

App Access con backend soto SQLEXPRESS, tutte le tabelle linkate correttamente, 

In Access, ho scritto una query, Query1, che uso per importare in excel dati selezionati da una tabella per postprocessing; e tutto funziona, usando queste righe di codice

Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=c:\testdir\AppAccess.accdb;"
        


sQRY = "SELECT * FROM Query1"

rs.open sQRY, cnn, adOpenStatic, adLockReadOnly

Cone vedete, nella cnn.open uso direttamente l'app in access, e tutto funziona. 

Mi sono chiesto, perchè usare questo marchingegno quando, per accedere alle tabelle sqlexpress di solito uso un codice più lineare? Quindi ho esportato la query nel database sqlexpress, e ho provato così

Server_Name = "DESKTOP-xxxxx\SQLEXPRESS" 
Database_Name = "MyDatabase" 

cnn.Open "Driver={SQL Server Native Client 11.0};Server=" & Server_Name & ";Database=" & Database_Name & ";TRUSTED_CONNECTION=YES;"
sQRY = "SELECT * FROM Query1" 

rs.open sQRY, cnn, adOpenStatic, adLockReadOnly

Questo codice non dà nessun errore, ma non restituisce niente, cioè,il recordset rimane vuoto.  Evidentemente c'è qualcosa che mi sfugge. Forse la query deve stare da qualche altra parte o va referenziata diversamente? 

Chiedo scusa se la domanda è stupida, ma sto imparando da solo… scusate anche il titolo oscuro. Grazie in anticipo

4 Risposte

  • Re: Connection.open su app access o database

    Salve,

    “Query1” cos'e'?

    salutoni romagnoli
    – 
    Andrea

  • Re: Connection.open su app access o database

    Query1 è la query che ho scritto nell'app. access e mi serve per selezionare i record nella tabella sqlexpress.  Non credo sia essenziale., comunque se è utile posso postarla

     
  • Re: Connection.open su app access o database

    Salve,

    di nuovo, “cos'e' ‘Query1’”? :D

    In SQL Server NON esiste il concetto di “query”… la “query” non e' un oggetto di database, che invece comprende Tabelle, Viste, Stored Procedure, Funzioni (tabellari), che sono oggetti di tipo diverso

    volgarmente, una “tabella” e' un contenitore “reale” di dati, cioe' l'entita', definita da attributi, che alla fine della fiera contiene i dati…

    E quindi “tipicamente”, l'oggetto tabella e' interrogabile tramite il DML, quindi e' possibile referenziarla con del codice SELECT … FROM nome_tabella.

    quindi, di nuovo, “cos'e' ‘Query1’”? :D

    salutoni romagnoli
    – 
    Andrea

  • Re: Connection.open su app access o database

    Credo di aver afferrato l'equivoco, grazie a te.

    In access, sulla query1 posso fare un export su odbc database. Ho misinterpretato tale “export”, pensando ad un export della query. Ora mi dici che la query non è oggetto di database, e quindi ho realizzato che viene esportata non la query, ma il risultato dellla query IN QUEL MOMENTO, sotto forma di tabella. Siccome in quel momento (quando ho fatto l'export) effettivamente la query non trovava niente, la tabella in  database era vuota: e tutto si spiega. Siccome l'export è statico, la tabella risultato della query non viene aggiornata quando cambia la tabella origine, e quindi continuo ad avere recordset vuoto anche quando, con il metodo originale, funziona tutto.

    Grazie mille della dritta. Continuerò ad usare serenamente il metodo che funziona.

Devi accedere o registrarti per scrivere nel forum
4 risposte