Access - query in VBA

di il
9 risposte

Access - query in VBA

Ciao a tutti,
ho bisogno di creare una macro che faccia la differenza tra i dati contenuti in due campi di una query.
I campi contengono dati riferiti a due anni diversi, ad es. 2018 e 2017 ma in base al database gli anni, e quindi i nomi dei campi, possono cambiare.
Per questo motivo nella macro ho inserito una Inputbox per indicare l'anno di riferimento.
La macro che ho scritto è la seguente:

Private Sub confronto_anni()
Dim A As Integer
Dim sSQL As String
Dim db As Database
Dim rst As Recordset

Set db = CurrentDb

A = InputBox("Specificare l'anno di riferimento")

sSQL = "SELECT querydb.'" & A & "- querydb.'" & (A - 1) & " FROM querydb;"

Set rst = db.OpenRecordset(sSQL)

End Sub

In questo modo, inserendo come anno di riferimento il 2018, ho l'errore "Errore di sintassi (operatore mancante) nell'espressione della query 'querydb.'2018' - querydb.'2017'."

Ho cercato varie soluzioni in rete ma non riesco a venirne a capo.
Grazie in anticipo

9 Risposte

  • Re: Access - query in VBA

    Dejavier ha scritto:


    ...
    sSQL = "SELECT querydb.'" & A & "- querydb.'" & (A - 1) & " FROM querydb;"
    ...
    l'errore "Errore di sintassi (operatore mancante) nell'espressione della query 'querydb.'2018' - querydb.'2017'."
    Non entro nel merito della correttezza dell'intera procedura, mi limito a correggere l'errore segnalato.
    I campi si chiamano 2018 e 2017? Se è così la SQL deve avere questa struttura
    SELECT (querydb.2018 - querydb.2017) As Differenza FROM querydb;
    Ci sono alcuni apici di troppo e una parentesi con Alias in meno.
    Per queste situazioni metti sempre un Debug.Print della stringa che aiuta tantissimo.
  • Re: Access - query in VBA

    Ciao,
    intanto grazie per la rapida risposta.
    Non posso inserire i nomi dei campi proprio perchè possono variare in base al database utilizzato.
    Comunque inserendo la stringa che mi hai indicato mi da l'errore "Uso non valido di '.', '!',o '()' nell'espressione della query...."
  • Re: Access - query in VBA

    Dejavier ha scritto:


    ...
    Non posso inserire i nomi dei campi proprio perchè possono variare in base al database utilizzato.
    Io ti ho detto cosa devi ottenere, non come (o non del tutto per lo meno). La via della concatenazione era buona ma non perfetta.
    Se questa non funziona
    SELECT ([querydb].[2018] - [querydb].[2017]) As Differenza FROM querydb;
    posta la SQL della query querydb, perché... deve esistere una query che si chiama querydb ovviamente.
  • Re: Access - query in VBA

    La query esiste chiaramente.
    Con le [ ] non segnala errori ma non visualizzo nessun risultato.
    Grazie ancora
  • Re: Access - query in VBA

    Dejavier ha scritto:


    ...
    Con le [ ] non segnala errori ma non visualizzo nessun risultato.
    Piano... dove ti aspetti di vedere il risultato? perché se il codice è solo quello che hai pubblicato (una volta sistemato bene l'aspetto della concatanazione) non vedrai comunque nessun risultato perché il recordset si ferma lì (tra l'altro senza essere chiuso e senza che la variabile venga settata a Nothing, dettagli).
  • Re: Access - query in VBA

    Si scusa c'è anche un rst.close (spero sia corretto) ma non so come fare a visualizzare i risultati...scusami ma sono proprio a terra in VBA
  • Re: Access - query in VBA

    Dejavier ha scritto:


    non so come fare a visualizzare i risultati...scusami ma sono proprio a terra in VBA
    il forum sotto quest'ultimo aspetto non è la strada giusta. Prima devi avere una adeguata base di VBA, poi si risolvono i problemi specifici.
  • Re: Access - query in VBA

    Ok, sapresti indicarmi una guida dove anche un neofita come me potrebbe capire come fare?
    Grazie
  • Re: Access - query in VBA

    Non si usano le guide ma si studia sui libri
Devi accedere o registrarti per scrivere nel forum
9 risposte