Query pass through native di Access

di il
6 risposte

Query pass through native di Access

Buongiorno a tutti,

sto cercando di imparare l'uso delle query in oggetto, ma non riesco a costruire un predicato SQL dinamico che possa essere interpretato dal server esterno PostgreSQL.

Il collegamento al server funziona ed infatti se inserisco la stringa:

SELECT public.events.machine_id, public.events.order, public.events.start_time, public.events.duration, public.events.program FROM public.events where machine_id='1'

mi restituisce un recordset corretto.

Il problema e' se invece del valore '1' voglio associare un valore dinamico basato su un controllo ad opzioni; sto seguendo quanto scritto nel post seguente:

https://www.iprogrammatori.it/forum-programmazione/access/ricerca-tabelle-collegate-t47714.html

Nell'esempio @Alex mostra come costruire la stringa passando il valore dell'oggetto e non l'oggetto stesso, ma l'esempio e' sviluppato con VBA, mentre l'interfaccia nativa della query PT espone una finestra dove scrivere la stringa SQL; ho fatto diversi tentativi ma senza risultato. Nello specifico:


SELECT public.events.machine_id, public.events.order, public.events.start_time, public.events.duration, public.events.program FROM public.events where machine_id= '" & [Forms]![frmGMgiornalieromacchine]![frmGMOPselezionemacchina] & "'

Restituisce un recordset vuoto

SELECT public.events.machine_id, public.events.order, public.events.start_time, public.events.duration, public.events.program FROM public.events where machine_id= '& [Forms]![frmGMgiornalieromacchine]![frmGMOPselezionemacchina] & '

Anche qui restituisce un recordset vuoto

SELECT public.events.machine_id, public.events.order, public.events.start_time, public.events.duration, public.events.program FROM public.events where machine_id=" & [Forms]![frmGMgiornalieromacchine]![frmGMOPselezionemacchina] & "

Questa da errore perche' non trova la colonna " & [Forms]![frmGMgiornalieromacchine]![frmGMOPselezionemacchina] & "

Di seguito la Query pass through

[img]https://i.imgur.com/2N85Wxt.jpeg[/img]

Sto sbagliando io a costruire la stringa (molto probabile) o forse l'interfaccia della query PT non e' in grado di estrapolare il valore dall'oggetto?

6 Risposte

  • Re: Query pass through native di Access

    La QPT Può essere parametrica, usando Parameters, oppure accedi alla proprietà SQL di Queeydef e cambi il costrutto.

  • Re: Query pass through native di Access

    27/11/2024 - @Alex ha scritto:

    La QPT Può essere parametrica, usando Parameters, oppure accedi alla proprietà SQL di Queeydef e cambi il costrutto.

    Buongiorno @Alex, l'interfaccia nativa di Access per le QPT non permette l'inserimento di parametri. Come vedi nell'immagine allegata, il comando e' disabilitato.

    https://imgur.com/DFQduL8

    Probabilmente dovro' passare da VBA...

  • Re: Query pass through native di Access

    eppure era molto chiaro...

    Dim qdf As DAO.Recordset
    Dim sSQL As String
    sSQL="SELECT * FROM T1 WHERE Codice=" & [Forms]![Articoli]![cercacodice]
    CurrentDb.QueryDefs("Q1").SQL=sSQL

    sostituisci 

    "select bla bla..." 

    con la tua select e 

    [Forms]![Articoli]![cercacodice] 

    con 

    [Forms]![frmGMgiornalieromacchine]![frmGMOPselezionemacchina]

  • Re: Query pass through native di Access

    Giusto per escludere l'errore banale: la maschera è aperta al momento dell'uso della query? Se nella finestra immediata scrivi

    ? [Forms]![frmGMgiornalieromacchine]![frmGMOPselezionemacchina]

    cosa ottieni?

    (Machine_id è testo? l'hai messo tra apici)

  • Re: Query pass through native di Access

    27/11/2024 - sihsandrea ha scritto:

    eppure era molto chiaro...

    Non ho detto che non e' stato chiaro, so come si scrive una stringa SQL in VBA...

    il problema e' che nell'interfaccia di Access per la QPT non la accetta scritta in quel modo...

  • Re: Query pass through native di Access

    27/11/2024 - Philcattivocarattere ha scritto:

    cosa ottieni?

    (Machine_id è testo? l'hai messo tra apici)

    In base all'opzione che seleziono ottengo un numero da 1 a 7.

    Il campo machine_id e' un campo varchart (quindi testo): devo formattare il valore del mio controllo?

Devi accedere o registrarti per scrivere nel forum
6 risposte