COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

di il
12 risposte

COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

Buongiorno,

chiedo aiuto per trovare una soluzione:

Ho testato il codice di sotto ma non funziona.

Ricevo errore come da screen shot postato. Sembra un errore di sintassi.

OBIETTIVO: creare una nuova query utilizzando un parametro che viene generato all'interno del codice stesso (come obiettivo finale il valore parametro (di tipo testo) dovrebbe essere prelevato da un recordset ADO aperto nello stesso codice tramite un ciclo LOOP automatizzando una serie di azioni identificate ad hoc dal codice - > purtroppo non essendo un programmatore vorrei arrivarci passo passo, la parte del recordset devo ancora impostarla).

Ringrazio in anticipo.

Option Compare Database

Private Sub Command0_Click()

Dim Cat As New ADOX.Catalog
Dim cmd As New ADODB.Command
Set Cat.ActiveConnection = CurrentProject.Connection
Dim ponum As String


ponum = "NFE1-PI-A-PO-J-001"

Dim strSql As String


strSql = "SELECT PSR.[PO NO], PSR.[PO POS] FROM PSR" _
& "WHERE [PO NO] ='& ponum &'"

cmd.CommandText = strSql
Cat.Views.Append "ListaPO", cmd
Set cmd = Nothing
Set Cat = Nothing
Application.RefreshDatabaseWindow

End Sub

12 Risposte

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    31/03/2024 - fcaliandro ha scritto:



    strSql = "SELECT PSR.[PO NO], PSR.[PO POS] FROM PSR" _
    & “WHERE [PO NO] ='& ponum &'”

    strSql = "SELECT PSR.[PO NO], PSR.[PO POS] FROM PSR WHERE [PO NO] ='" & ponum & "'”

    Vai in debug e verifica il valore di strSql …

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    Praticamente nella query hai scritto

    FROM PSRWHERE [PO NO] ='& ponum &'

    Secondo te cosa non va in questa parte?

    P.S. ma non hai letto il messaggio d'errore?

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    31/03/2024 - oregon ha scritto:


    Praticamente nella query hai scritto

    FROM PSRWHERE [PO NO] ='& ponum &'

    Secondo te cosa non va in questa parte?

    P.S. ma non hai letto il messaggio d'errore?

    Ho verificato escludendo il criterio (where) che l’istruzione sql funziona ed ottengo la query in uscita correttamente . Quindi deduco che L’errore di sintassi è dopo il where come da messaggio di errore. Successivamente Ho provato tante volte cambiando le virgolette o gli & ma non trovo la sintassi giusta. Mi sono fermato stremato dopo aver cercato su vari siti finché non ho trovato su queso forum un topic molto simile al mio aperto nel 2021. Potete aiutarmi a scrivere questa parte di codice?

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    Ne deduci? Ma è evidente… parliamo di una semplice concatenazione di stringhe…

    comunque, dato che non hai notato quello che ti ho mostrato prima…

    & "  WHERE [PO NO] = '" & ponum & "'"
  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    Grazie Oregon, non l’avevo notata. Ne ho provate così tante che mi era sembrata la stessa che ho postato. Adesso la provo. Gli unici spazi sono prima e dopo &. Comunque faccio un ctrl C. 
    Grazie Francesco 

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    01/04/2024 - fcaliandro ha scritto:


    Grazie Oregon, non l’avevo notata….

    Direi che non avevi notato neanche la mia risposta :)

    31/03/2024 - max.riservo ha scritto:

    strSql = "SELECT PSR.[PO NO], PSR.[PO POS] FROM PSR WHERE [PO NO] ='" & ponum & "'”

    Saluti

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    Gli unici spazi sono prima e dopo &.

    Che vuoi dire? Ma hai visto cosa ho scritto e come avevi scritto tu? Non è solo una questione di spazi…

    Max … ho tentato di dargli delle dritte come hai fatto tu ma non c'era modo di uscirne…

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    Max, Oregon,

    scusatemi per quanto sopra.

    Ho adottato la correzione di sotto riportata e adesso funziona bene.

    Senza il vostro (entrami aiuto) non sarei riuscito. Grazie Grazie Grazie !!!!!

    Option Compare Database

    Private Sub Command0_Click()

    Dim Cat As New ADOX.Catalog
    Dim cmd As New ADODB.Command
    Set Cat.ActiveConnection = CurrentProject.Connection
    Dim ponum As String


    ponum = "NFE1-PI-11058-A-PO-J-001"

    Dim strSql As String
    strSql = "SELECT PMSR.[PO NO], PMSR.[PO POS] FROM PMSR WHERE PMSR.[PO NO] ='" & ponum & "'"

    cmd.CommandText = strSql
    Cat.Views.Append "CellStudenti", cmd
    Set cmd = Nothing
    Set Cat = Nothing
    Application.RefreshDatabaseWindow

    End Sub

    Grazie

    Francesco

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    01/04/2024 - migliorabile ha scritto:


    @fcaliandro stai continuando a fare SEMPRE lo stesso errore! 

    MANCA UNO SPAZIO tra il NOME DELLA TABELLA e la clausola WHERE!.

    Non puoi ‘inventarti’ la sintassi degli statement SQL! 

    Devi stare ATTENTO a quello che scrivi e LEGGERE CON ATTENZIONE i suggerimenti che ti diamo! 

    Non pensare che per noi sia piu' facile ;-) Quando facciamo pasticci noi, sono infinitamente piu' complicati da trovare :-) 

    Grazie Migliorabile,

    ho preso nota. E devo dire che mi piace molto questo FORUM. Mi sono appena iscritto ed ho trovato alta professionalità.

    Non ho trovato lo stesso livello in altri forum che ho frequentato in passato.

    Il  mio obiettivo attuale è molto alto per le mie scarse competenze ma spero di migliorare strada facendo seguendo tutti i consigli di chi ne sa molto più di me.  :-)

    Francesco

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    Però accetta qualche consiglio…

    Leggi il regolamento del forum (niente maiuscolo specie nel titolo, usala formattazione quando proponi codice, evita di chiedere pappa pronta ma collabora in base ai suggerimenti…)

    Studia un poco di vba e sql se vuoi continuare ad usarli

    @Migliorabile… Dove sta il tuo post?  

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    Ogni tanto i post di @Migliorabile spariscono senza un motivo chiaro, non lo trovo utile ma mi pare si possa…

    Detto questo, suggerirei all'OP di non usare ADO ne ADOX se intende usare Access+JET, in quanto l'accoppiata non è delle migliori… ma di approdonfire DAO, driver molto più calzante su Access.

    Una volta invece scelto e deciso se appoggiarsi con Access ad un RDBMS in rete allora potrai avere una visione più completa e valutare se usare o meno ADO/ADOX.

  • Re: COME ASSEGNARE UN PARAMETRO AD UNA NUOVA QUERY CREATA VIA CODICE VBA?

    Grazie Alex

    Inizio con DAO. 

    Francesco 

Devi accedere o registrarti per scrivere nel forum
12 risposte