Codes SQL multiples imbriqués dans Access en vba
RésoluBiankaBo Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
Bonjour à vous,
J'aurais besoin de votre expertise.
Je tente d'imbriquer des 5 codes SQL ensemble le plus proprement possible.
Ces codes sont valides lorsque j'exécute mes requêtes dans Access par l'assistant et la requête finale "sqlAJ" fonctionne bien à ce niveau.
J'ai toutefois besoin de parcourir ma requête finale "sqlAJ" en vba pour y trouver les données souhaitées, ce qui me force à devoir les écrire manuellement pour ouvrir un recordset "enrAJRecl". Lorsque j'exécute mon code, j'obtiens l'erreur suivante sur la ligne 41 du code :
Erreur d'exécution '3061' : Trop peu de paramètres. 8 attendus.
J'ai peut-être mal imbriqué mes requêtes dans mes codes. Pouvez-vous m'aider s'il vous plaît?
Voici mes codes :
Dim enrAJRecl As DAO.Recordset 'Recordset du SQL des réclamations à traiter sqlAJ Dim strSqlENC As String 'Requête du sommaire des enc ajustement Dim strSqlFAC As String ''Requête du sommaire des fac ajustement Dim strSqlReclAJ As String 'Requête du sommaire des réclamations à traiter, incomplet Dim strSqlSGpi As String ' Requête du sommaire GPI global Dim sqlAJ As String 'Requête SQL comparative finale des réclamations à traiter 'Inscription et imbriquement des codes SQL strSqlENC = "SELECT [13-AJUSTEMENTS].[LienRecl13], [13-AJUSTEMENTS].[TypeAjust], Sum([13-AJUSTEMENTS].[MontAjust]) AS [SommeDeMontAjust]" & _ "FROM [13-AJUSTEMENTS]" & _ "GROUP BY [13-AJUSTEMENTS].[LienRecl13], [13-AJUSTEMENTS].[TypeAjust]" & _ "HAVING ((([13-AJUSTEMENTS].[TypeAjust])='ENC'))" strSqlFAC = "SELECT [13-AJUSTEMENTS].[LienRecl13], [13-AJUSTEMENTS].[TypeAjust], Sum([13-AJUSTEMENTS].[MontAjust]) AS [SommeDeMontAjust]" & _ "FROM [13-AJUSTEMENTS]" & _ "GROUP BY [13-AJUSTEMENTS].[LienRecl13], [13-AJUSTEMENTS].[TypeAjust]" & _ "HAVING ((([13-AJUSTEMENTS].[TypeAjust])='FAC'))" strSqlReclAJ = "SELECT [11-RECLAMATIONS].[NoReclamation], [11-RECLAMATIONS].[NumSérie11], [11-RECLAMATIONS].[MiseAJour], [11-RECLAMATIONS].[SystemeRecl]," & _ " [11-RECLAMATIONS].[MFactInitRecl], [11-RECLAMATIONS].[EncInitRecl], [11-RECLAMATIONS].[SoldeInitRecl], [05-FN1-SF2_RECL_ENC_SOM].[SommeDeMontAjust]," & _ " [05-FN1-SF3_RECL_FAC_SOM].[SommeDeMontAjust], IIf([05-FN1-SF2_RECL_ENC_SOM].[SommeDeMontAjust]<>0 Or [05-FN1-SF2_RECL_ENC_SOM].[SommeDeMontAjust]<>'',[05-FN1-SF2_RECL_ENC_SOM].[SommeDeMontAjust],0) AS [SAEnc]," & _ " IIf([05-FN1-SF3_RECL_FAC_SOM].[SommeDeMontAjust]<>0 Or [05-FN1-SF3_RECL_FAC_SOM].[SommeDeMontAjust]<>'',[05-FN1-SF3_RECL_FAC_SOM].[SommeDeMontAjust],0) AS [SAFac]," & _ " [MFactInitRecl]+[SAFac] AS [FacAct], [EncInitRecl]+[SAEnc] AS [EncAct], [SoldeInitRecl]+[SAFac]-[SAEnc] AS [SldAct]" & _ "FROM ([11-RECLAMATIONS] LEFT JOIN (" & strSqlFAC & ") AS [05-FN1-SF3_RECL_FAC_SOM] ON [11-RECLAMATIONS].[NoReclamation] = [05-FN1-SF3_RECL_FAC_SOM].[LienRecl13])" & _ " LEFT JOIN (" & strSqlENC & ") AS [05-FN1-SF2_RECL_ENC_SOM] ON [11-RECLAMATIONS].[NoReclamation] = [05-FN1-SF2_RECL_ENC_SOM].[LienRecl13]" & _ "WHERE ((([11-RECLAMATIONS].[MiseAJour])=True) AND (([11-RECLAMATIONS].[SystemeRecl])='GPI'))" strSqlSGpi = "SELECT 'GPI-' & [ECO] & '-' & [ANNEE] & '-' & [EMPR] AS [NumSer], Sum([dbo_GPM_N_FACT].[MNT_A_PAYER]) AS [FacReel]," & _ " Sum([MNT_A_PAYER]-[SOLDE]) AS [EncReel], Sum([dbo_GPM_N_FACT].[SOLDE]) AS [SldReel]" & _ "FROM [dbo_GPM_N_FACT]" & _ "GROUP BY 'GPI-' & [ECO] & '-' & [ANNEE] & '-' & [EMPR]" sqlAJ = "SELECT [Copie de 05-FN3_MAJ_MASS_GPI].[NumSer], [Copie de 05-FN3_MAJ_MASS_RECL].[FacAct], [Copie de 05-FN3_MAJ_MASS_GPI].[FacReel]," & _ " [FacReel]-[FacAct] AS [VFac], [Copie de 05-FN3_MAJ_MASS_RECL].[EncAct], [Copie de 05-FN3_MAJ_MASS_GPI].[EncReel], [EncReel]-[EncAct] AS [VEnc]," & _ " [Copie de 05-FN3_MAJ_MASS_RECL].[SldAct], [Copie de 05-FN3_MAJ_MASS_GPI].[SldReel], [SldReel]-[SldAct] AS [VSld], [Copie de 05-FN3_MAJ_MASS_RECL].[NoReclamation]" & _ "FROM (" & strSqlSGpi & ") AS [Copie de 05-FN3_MAJ_MASS_RECL], (" & strSqlReclAJ & ") AS [Copie de 05-FN3_MAJ_MASS_GPI]" & _ "WHERE ((([Copie de 05-FN3_MAJ_MASS_GPI].[NumSer])=[NumSérie11]) AND (([FacReel]-[FacAct])<>0)) OR ((([Copie de 05-FN3_MAJ_MASS_GPI].[NumSer])=[NumSérie11])" & _ " AND (([EncReel]-[EncAct])<>0)) OR ((([Copie de 05-FN3_MAJ_MASS_GPI].[NumSer])=[NumSérie11]) AND (([SldReel]-[SldAct])<>0));" Set enrAJRecl = baseAJ.OpenRecordset(sqlAJ) 'Ouvrir la requête des réclamations à traiter pour les parcourir
Merci énormément!! :)
- Iif sql
- Logiciel sql - Télécharger - Bases de données
- Requete sql pix - Forum PHP
- Additions et multiplication dans des requêtes SQL ✓ - Forum MySQL
- Sql query download - Télécharger - Gestion de données
- Ora-00933: la commande sql ne se termine pas correctement ✓ - Forum Oracle
3 réponses
Bonjour,
quand tu concatène "Toto"& "Titi" tu écris "TotoTiti" il faut un espace!
'Inscription et imbriquement des codes SQL strSqlENC = "SELECT [13-AJUSTEMENTS].[LienRecl13], [13-AJUSTEMENTS].[TypeAjust], Sum([13-AJUSTEMENTS].[MontAjust]) AS [SommeDeMontAjust]" & _ " FROM [13-AJUSTEMENTS]" & _ " Where ((([13-AJUSTEMENTS].[TypeAjust])='ENC'))" & _ " GROUP BY [13-AJUSTEMENTS].[LienRecl13], [13-AJUSTEMENTS].[TypeAjust]"
on utilise le having pour tout ce qui concerne le Group By sum,Max,Min,Moy
dans ton cas tu gagneras en efficacité en utilisant un where. notes que j'ai ajouté un espace en début de ligne pour éviter une concaténation contigu.
select (CHAMP,) From (Table,) Where Group by Having
Bonjour,
J'ai essayé de mettre des espaces, mais le résultat est le même.
Je crois que ça se situe plutôt au niveau des requêtes imbriquées.
Il y a quelque chose que je n'écris pas correctement, mais je ne sais pas quoi.. et ce, 8 fois.. Mes références aux autres requêtes ne sont peut-être pas bonnes..
Oh oh! J'ai trouvé!!
Erreur d'inattention.
J'ai échangé involontairement deux codes SQL.. "strSqlSGpi " VS "strSqlReclAJ"..
Voici la portion qui n'était pas correcte:
sqlAJ = "SELECT [Copie de 05-FN3_MAJ_MASS_GPI].[NumSer], [Copie de 05-FN3_MAJ_MASS_RECL].[FacAct], [Copie de 05-FN3_MAJ_MASS_GPI].[FacReel]," & _ " [FacReel]-[FacAct] AS [VFac], [Copie de 05-FN3_MAJ_MASS_RECL].[EncAct], [Copie de 05-FN3_MAJ_MASS_GPI].[EncReel], [EncReel]-[EncAct] AS [VEnc]," & _ " [Copie de 05-FN3_MAJ_MASS_RECL].[SldAct], [Copie de 05-FN3_MAJ_MASS_GPI].[SldReel], [SldReel]-[SldAct] AS [VSld], [Copie de 05-FN3_MAJ_MASS_RECL].[NoReclamation]" & _ "FROM (" & strSqlSGpi & ") AS [Copie de 05-FN3_MAJ_MASS_RECL], (" & strSqlReclAJ & ") AS [Copie de 05-FN3_MAJ_MASS_GPI]" & _ "WHERE ((([Copie de 05-FN3_MAJ_MASS_GPI].[NumSer])=[NumSérie11]) AND (([FacReel]-[FacAct])<>0)) OR ((([Copie de 05-FN3_MAJ_MASS_GPI].[NumSer])=[NumSérie11])" & _ " AND (([EncReel]-[EncAct])<>0)) OR ((([Copie de 05-FN3_MAJ_MASS_GPI].[NumSer])=[NumSérie11]) AND (([SldReel]-[SldAct])<>0));"
Voici la portion corrigée qui fonctionne:
sqlAJ = "SELECT [Copie de 05-FN3_MAJ_MASS_GPI].[NumSer], [Copie de 05-FN3_MAJ_MASS_RECL].[FacAct], [Copie de 05-FN3_MAJ_MASS_GPI].[FacReel]," & _ " [FacReel]-[FacAct] AS [VFac], [Copie de 05-FN3_MAJ_MASS_RECL].[EncAct], [Copie de 05-FN3_MAJ_MASS_GPI].[EncReel], [EncReel]-[EncAct] AS [VEnc]," & _ " [Copie de 05-FN3_MAJ_MASS_RECL].[SldAct], [Copie de 05-FN3_MAJ_MASS_GPI].[SldReel], [SldReel]-[SldAct] AS [VSld], [Copie de 05-FN3_MAJ_MASS_RECL].[NoReclamation]" & _ "FROM (" & strSqlReclAJ & ") AS [Copie de 05-FN3_MAJ_MASS_RECL], (" & strSqlSGpi & ") AS [Copie de 05-FN3_MAJ_MASS_GPI]" & _ "WHERE ((([Copie de 05-FN3_MAJ_MASS_GPI].[NumSer])=[NumSérie11]) AND (([FacReel]-[FacAct])<>0)) OR ((([Copie de 05-FN3_MAJ_MASS_GPI].[NumSer])=[NumSérie11])" & _ " AND (([EncReel]-[EncAct])<>0)) OR ((([Copie de 05-FN3_MAJ_MASS_GPI].[NumSer])=[NumSérie11]) AND (([SldReel]-[SldAct])<>0));"
Merci pour votre aide!! :)