Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Ciao Giorgio
Grazie per l'interessamento, ma la soluzione che mi proponi non funziona in quanto la definizione dei campi da cui prelevare i dati si riferisce ad una query non esistente: la "x" (es. SELECT x.Codice ecc.).
Nel mio esempio si riferiva alla querydef che avevo creato, e la stringa della query che mi hai suggerito non sembrerebbe utilizzabile nella seconda query.
Lasciando il tutto come tu suggerisci, da "Errore di sintassi nella proposizione FROM", mentre sostituendo ad ogni "x" dei campi il richiamo stringa, da "Operazione non consentita nelle sottoquery."
Non vorrei aver compiuto un errore di interpretazione puerile nell'utilizzo del tuo suggerimento, ma proprio utilizzato tal quale non sembrerebbe funzionare.
Hai qualche altra soluzione? o suggerirmi dove ho sbagliato?
Grazie per la collaborazione e cordiali saluti
franco
Ciao Franco,
il concetto è esatto, è possibile inserire una SELECT nella clausola FROM, si chiama Tabella Derivata, l'alias X che ho messo rende il resto del codice compatibile qon quello da te postato.
La causa dell'errore è da ricercare nel codice SQL di qryX, c'è un punto e virgola di chiusura prima della UNION che mi era sfuggito e che va tolto.
questo è il codice corretto:
Dim AnRif As Integer
Dim AzAt As Byte
Dim qryX AS String
AzAt = 1 'Convenzionale per l'esempio
AnRif = 2012 'Convenzionale per l'esempio
qryX = "SELECT SpCant.Codice, Year([DataRap]) AS Anno, Month([DataRap]) AS Mese, SpCant.CodCentro, SpCant.CodLav, " & _
"Sum(SpCant.Quant) AS Quant, Sum((1+Cantieri!RicMat/100)*SpCant!Quant*SpCant!CostUnit) AS SAP FROM Cantieri INNER JOIN SpCant " & _
"ON (Cantieri.CodCant = SpCant.Codice) AND (Cantieri.Az = SpCant.Az) IN 'L:\Dati.mdb' WHERE (((Cantieri.Az)=" & AzAt & ") " & _
"AND ((Year([DataRap]))=" & AnRif & ")) GROUP BY SpCant.Codice, Year([DataRap]), Month([DataRap]), SpCant.CodCentro, SpCant.CodLav " & _
"UNION SELECT SpCantAPSaldi.Codice, SpCantAPSaldi.Anno, SpCantAPSaldi.Mese, SpCantAPSaldi.CodCentro, SpCantAPSaldi.CodLav, " & _
"Sum(SpCantAPSaldi.Quant) AS Quant, Sum((1+Cantieri!RicMat/100)*SpCantAPSaldi!Importo) AS SAP FROM Cantieri INNER JOIN SpCantAPSaldi " & _
"ON (Cantieri.CodCant = SpCantAPSaldi.Codice) AND (Cantieri.Az = SpCantAPSaldi.Az) IN 'L:\Dati..mdb' WHERE (((Cantieri.Az)=" & AzAt & ") " & _
"AND ((SpCantAPSaldi.Anno)<" & AnRif & ")) GROUP BY SpCantAPSaldi.Codice, SpCantAPSaldi.Anno, SpCantAPSaldi.Mese, " & _
"SpCantAPSaldi.CodCentro, SpCantAPSaldi.CodLav"
DoCmd.RunSQL ("INSERT INTO SpCant ( Codice, Anno, Mese, CodCentro, CodLav, Quant, SAP ) SELECT x.Codice, x.Anno, x.Mese, x.CodCentro, x.CodLav, " & _
"Sum(x.Quant) AS Quant, Sum(x.SAP) AS SAP FROM (" & qryX & ") AS x INNER JOIN CantRif ON x.Codice = CantRif.Codice GROUP BY x.Codice, x.Anno, x.Mese, " & _
"x.CodCentro, x.CodLav;")
Ciao
Giorgio Rancati