OVH Cloud OVH Cloud

Excel Query from Access Query

4 réponses
Avatar
Bruno Campanini
I have an Access query that looks like this:

SELECT [1_GEN].F1,
Sum([1_GEN].[F2]+[2_FEB].[F2]) AS FF2,
Sum([1_GEN].[F3]+[2_FEB].[F4]) AS FF3,
Sum([1_GEN].[F4]+[2_FEB].[F4]) AS FF4,
Sum([1_GEN].[F5]+[2_FEB].[F5]) AS FF5,
Sum([1_GEN].[F6]+[2_FEB].[F6]) AS FF6,
[FF2]+[FF3]+[FF4]+[FF5]+[FF6] AS S
FROM 1_GEN
INNER JOIN 2_FEB ON [1_GEN].F1 = [2_FEB].F1
GROUP BY [1_GEN].F1;


I have transformed to Excel in this way:
SQL = "SELECT [GEN$A1:A100].F1,"
SQL = SQL & "Sum([GEN$A1:A100].F2 + [FEB$A1:A100].F2) AS FF2, "
SQL = SQL & "Sum([GEN$A1:A100].F3 + [FEB$A1:A100].F3) AS FF3,"
SQL = SQL & "Sum([GEN$A1:A100].F4 + [FEB$A1:A100].F4) AS FF4,"
SQL = SQL & "Sum([GEN$A1:A100].F5 + [FEB$A1:A100].F3) AS FF5,"
SQL = SQL & "Sum([GEN$A1:A100].F6 + [FEB$A1:A100].F4) AS FF6,"
SQL = SQL & "FF2+FF3+FF4+FF5+FF6 AS S "
SQL = SQL & "FROM [GEN$A1:A100] "
SQL = SQL & "INNER JOIN [FEB$A1:A100] ON [GEN$A1:A100].F1 [FEB$A1:A100].F1 "
SQL = SQL & "GROUP BY [GEN$A1:A100].F1;"

in order to run it, from Excel, with:
Set RS = xlDB.OpenRecordset(SQL, dbOpenDynaset)
Destination(2, 1).CopyFromRecordset RS

But it does'n work!
Eoor:
Two few parameters, expected 8.

The error seems to be in the four "Sum(... expression.

Any suggestion?

Bruno

4 réponses

Avatar
MichD
Bonjour,
Regarde Í  cette adresse :
https://myengineeringworld.net/2013/10/access-queries-excel-vba.html
2 Méthodes : Importer le tout avec une requête dans la macro d'Excel ou
importer le résultat d'une requête déjÍ  existante dans Access.
Dans le bas de la page, tu peux télécharger un fichier exemple (excel +
access).
MichD
Avatar
MichD
Si ta requête fonctionne bien dans Access, pourquoi ne pas créer une
requête dans Access avec ton code et d'importer dans Excel le résultat
de cette requête. Tu as un exemple (2e code) de code sur le site suggéré.
MichD
Avatar
Bruno Campanini
MichD formulated the question :
Si ta requête fonctionne bien dans Access, pourquoi ne pas créer une requête
dans Access avec ton code et d'importer dans Excel le résultat de cette
requête. Tu as un exemple (2e code) de code sur le site suggéré.
MichD

I don't want ti import data from Access, I would get the result
of operation (with the data already in Excel) from Excel, using
a query, which is much speedier than a series of Loop.
The code for Excel is very simple as I have already written:
Set RS = xlDB.OpenRecordset(SQL, dbOpenDynaset)
Destination(2, 1).CopyFromRecordset RS
But I get error on the 5 line "Sum(..." of SQL sentence.
Bruno
Avatar
MichD
Le 24/11/20 Í  15:30, Bruno Campanini a écrit :
MichD formulated the question :
Si ta requête fonctionne bien dans Access, pourquoi ne pas créer une
requête dans Access avec ton code et d'importer dans Excel le résultat
de cette requête. Tu as un exemple (2e code) de code sur le site suggéré.
MichD

I don't want ti import data from Access, I would get the result
of operation (with the data already in Excel) from Excel, using
a query, which is much speedier than a series of Loop.
The code for Excel is very simple as I have already written:
Set RS = xlDB.OpenRecordset(SQL, dbOpenDynaset)
Destination(2, 1).CopyFromRecordset RS
But I get error on the 5 line "Sum(..." of SQL sentence.
Bruno

À cette adresse, tu as un exemple qui ressemble Í  ce que tu cherches.
https://stackoverflow.com/questions/44289124/excel-vba-adodb-sql-sum-if-data-matches
Mon expérience en SQL n'est pas assez grande pour pouvoir effectuer la
correction.
MichD