IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

requete sql complexe sous vba


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de moicats
    Inscrit en
    Mars 2006
    Messages
    299
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 299
    Par défaut requete sql complexe sous vba
    bonjour,

    j'ai une requete complexe à programmer en sql sous vba. ce que j'ai fais ne fonctionne pas il me dit qu'il faut que je base ma requete sur une table ou une requete.

    en fait ce sont des requetes imbriquées basées sur des tables.
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Private Sub Report_Open(Cancel As Integer)
     Dim SQL As String
     Dim Cat_mmq_0 As String
     Dim Cat_mmq_X As String
     Dim Cat_mmq_pas As String
     
    If Forms![choix document]!Modifiable0 = "MMQGEN000" Then
     If MsgBox("Avez-vous mis à jour les dates et indices des différents chapitres modifiés (MMQGEN001,..002,.....029...)", vbOKCancel, "ATTENTION") = vbOK Then
      If MsgBox("Désirez-vous lister toutes les parties du Manuel (Yes) ou seulement celles mises à jour (No)", vbYesNo, "CHOIX") = vbYes Then
       ' requete = liste personne de MMQGEN000
       Cat_mmq_0 = "SELECT [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT], [IDENTIFICATION DES DOCUMENTS].CODE, [IDENTIFICATION DES DOCUMENTS].INDICE, [IDENTIFICATION DES DOCUMENTS].DATE, [IDENTIFICATION DES DOCUMENTS].TITRE, PERSONNEL.Présence, PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM AS NomPrénom, PERSONNEL.[REFERENCE PERSONNEL]"
       Cat_mmq_0 = Cat_mmq_0 & "FROM PERSONNEL INNER JOIN ([IDENTIFICATION DES DOCUMENTS] INNER JOIN ([DIFFUSION DES DOCUMENTS] INNER JOIN [FONCTIONS DU PERSONNEL] ON [DIFFUSION DES DOCUMENTS].FONCTION = [FONCTIONS DU PERSONNEL].FONCTION) ON [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT] = [DIFFUSION DES DOCUMENTS].[REF document]) ON PERSONNEL.[REFERENCE PERSONNEL] = [FONCTIONS DU PERSONNEL].[REF personnel]"
       Cat_mmq_0 = Cat_mmq_0 & "WHERE ((([IDENTIFICATION DES DOCUMENTS].CODE) = 'MMQGEN000') And ((PERSONNEL.Présence) = True))"
       Cat_mmq_0 = Cat_mmq_0 & "GROUP BY [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT], [IDENTIFICATION DES DOCUMENTS].CODE, [IDENTIFICATION DES DOCUMENTS].INDICE, [IDENTIFICATION DES DOCUMENTS].DATE, [IDENTIFICATION DES DOCUMENTS].TITRE, PERSONNEL.Présence, PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM, PERSONNEL.[REFERENCE PERSONNEL]"
       Cat_mmq_0 = Cat_mmq_0 & "HAVING ((([PERSONNEL]![NOM] & ' ' & [PERSONNEL]![PRENOM])<>'Tout le personnel ULM'))"
       ' Requete = liste personne des autres MMQGENxxx
       Cat_mmq_X = "SELECT [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT], [IDENTIFICATION DES DOCUMENTS].CODE, [IDENTIFICATION DES DOCUMENTS].INDICE, [IDENTIFICATION DES DOCUMENTS].DATE, [IDENTIFICATION DES DOCUMENTS].TITRE, PERSONNEL.Présence, PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM AS NomPrénom, PERSONNEL.[REFERENCE PERSONNEL]"
       Cat_mmq_X = Cat_mmq_X & "FROM PERSONNEL INNER JOIN ([IDENTIFICATION DES DOCUMENTS] INNER JOIN ([DIFFUSION DES DOCUMENTS] INNER JOIN [FONCTIONS DU PERSONNEL] ON [DIFFUSION DES DOCUMENTS].FONCTION = [FONCTIONS DU PERSONNEL].FONCTION) ON [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT] = [DIFFUSION DES DOCUMENTS].[REF document]) ON PERSONNEL.[REFERENCE PERSONNEL] = [FONCTIONS DU PERSONNEL].[REF personnel]"
       Cat_mmq_X = Cat_mmq_X & "WHERE ((([IDENTIFICATION DES DOCUMENTS].CODE) Like 'MMQGEN*' And ([IDENTIFICATION DES DOCUMENTS].CODE)<>'MMQGEN000') AND ((PERSONNEL.Présence)=True))"
       Cat_mmq_X = Cat_mmq_X & "GROUP BY [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT], [IDENTIFICATION DES DOCUMENTS].CODE, [IDENTIFICATION DES DOCUMENTS].INDICE, [IDENTIFICATION DES DOCUMENTS].DATE, [IDENTIFICATION DES DOCUMENTS].TITRE, PERSONNEL.Présence, PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM, PERSONNEL.[REFERENCE PERSONNEL]"
       Cat_mmq_X = Cat_mmq_X & "HAVING ((([PERSONNEL]![NOM] & ' ' & [PERSONNEL]![PRENOM])<>'Tout le personnel ULM'))"
     
      Else
       ' requete = liste personne de MMQGEN000
       Cat_mmq_0 = "SELECT [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT], [IDENTIFICATION DES DOCUMENTS].CODE, [IDENTIFICATION DES DOCUMENTS].INDICE, [IDENTIFICATION DES DOCUMENTS].DATE, [IDENTIFICATION DES DOCUMENTS].TITRE, PERSONNEL.Présence, PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM AS NomPrénom, PERSONNEL.[REFERENCE PERSONNEL]"
       Cat_mmq_0 = Cat_mmq_0 & "FROM PERSONNEL INNER JOIN ([IDENTIFICATION DES DOCUMENTS] INNER JOIN ([DIFFUSION DES DOCUMENTS] INNER JOIN [FONCTIONS DU PERSONNEL] ON [DIFFUSION DES DOCUMENTS].FONCTION = [FONCTIONS DU PERSONNEL].FONCTION) ON [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT] = [DIFFUSION DES DOCUMENTS].[REF document]) ON PERSONNEL.[REFERENCE PERSONNEL] = [FONCTIONS DU PERSONNEL].[REF personnel]"
       Cat_mmq_0 = Cat_mmq_0 & "WHERE ((([IDENTIFICATION DES DOCUMENTS].CODE) = 'MMQGEN000') And ((PERSONNEL.Présence) = True))"
       Cat_mmq_0 = Cat_mmq_0 & "GROUP BY [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT], [IDENTIFICATION DES DOCUMENTS].CODE, [IDENTIFICATION DES DOCUMENTS].INDICE, [IDENTIFICATION DES DOCUMENTS].DATE, [IDENTIFICATION DES DOCUMENTS].TITRE, PERSONNEL.Présence, PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM, PERSONNEL.[REFERENCE PERSONNEL]"
       Cat_mmq_0 = Cat_mmq_0 & "HAVING ((([IDENTIFICATION DES DOCUMENTS].DATE)>[depuis la date?]) AND ((Not (PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM)='Tout le personnel ULM')))"
       ' Requete = liste personne des autres MMQGENxxx
       Cat_mmq_X = "SELECT [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT], [IDENTIFICATION DES DOCUMENTS].CODE, [IDENTIFICATION DES DOCUMENTS].INDICE, [IDENTIFICATION DES DOCUMENTS].DATE, [IDENTIFICATION DES DOCUMENTS].TITRE, PERSONNEL.Présence, PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM AS NomPrénom, PERSONNEL.[REFERENCE PERSONNEL]"
       Cat_mmq_X = Cat_mmq_X & "FROM PERSONNEL INNER JOIN ([IDENTIFICATION DES DOCUMENTS] INNER JOIN ([DIFFUSION DES DOCUMENTS] INNER JOIN [FONCTIONS DU PERSONNEL] ON [DIFFUSION DES DOCUMENTS].FONCTION = [FONCTIONS DU PERSONNEL].FONCTION) ON [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT] = [DIFFUSION DES DOCUMENTS].[REF document]) ON PERSONNEL.[REFERENCE PERSONNEL] = [FONCTIONS DU PERSONNEL].[REF personnel]"
       Cat_mmq_X = Cat_mmq_X & "WHERE ((([IDENTIFICATION DES DOCUMENTS].CODE) Like 'MMQGEN*' And ([IDENTIFICATION DES DOCUMENTS].CODE)<>'MMQGEN000') AND ((PERSONNEL.Présence)=True))"
       Cat_mmq_X = Cat_mmq_X & "GROUP BY [IDENTIFICATION DES DOCUMENTS].[REFERENCE DOCUMENT], [IDENTIFICATION DES DOCUMENTS].CODE, [IDENTIFICATION DES DOCUMENTS].INDICE, [IDENTIFICATION DES DOCUMENTS].DATE, [IDENTIFICATION DES DOCUMENTS].TITRE, PERSONNEL.Présence, PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM, PERSONNEL.[REFERENCE PERSONNEL]"
       Cat_mmq_X = Cat_mmq_X & "HAVING ((([IDENTIFICATION DES DOCUMENTS].DATE)>[depuis la date?]) AND ((Not (PERSONNEL!NOM & ' ' & PERSONNEL!PRENOM)='Tout le personnel ULM')))"
     
      End If
      'requete trie personne des MMQGENxxx pas dans MMQGEN000
      Cat_mmq_pas = "SELECT [cat mmq X].DATE, [cat mmq X].TITRE, [cat mmq X].NomPrénom, [cat mmq X].Présence, [cat mmq X].[REFERENCE PERSONNEL], [cat mmq X].INDICE, [cat mmq X].CODE, [cat mmq X].[REFERENCE DOCUMENT], [cat mmq 0].[REFERENCE PERSONNEL]"
      Cat_mmq_pas = Cat_mmq_pas & "FROM (" & Cat_mmq_0 & ") as [cat mmq 0] RIGHT JOIN (" & Cat_mmq_X & ") as[cat mmq X] ON [cat mmq 0].[REFERENCE PERSONNEL] = [cat mmq X].[REFERENCE PERSONNEL]"
      Cat_mmq_pas = Cat_mmq_pas & "WHERE ((([cat mmq 0].[REFERENCE PERSONNEL]) Is Null))"
     
      'requete union des MMQGEN000 et des different MMQGENxxx
      SQL = "SELECT [cat mmq 0].[REFERENCE DOCUMENT] AS REF, [cat mmq 0].CODE, [cat mmq 0].INDICE, [cat mmq 0].DATE, [cat mmq 0].TITRE, [cat mmq 0].Présence, [cat mmq 0].NomPrénom"
      SQL = SQL & "FROM (" & Cat_mmq_0 & ")as [cat mmq 0]"
      SQL = SQL & "UNION SELECT [cat mmq PAS].[REFERENCE DOCUMENT] AS REF, [cat mmq PAS].CODE, [cat mmq PAS].INDICE, [cat mmq PAS].DATE, [cat mmq PAS].TITRE, [cat mmq PAS].Présence, [cat mmq PAS].NomPrénom"
      SQL = SQL & "FROM (" & Cat_mmq_pas & ") as [cat mmq PAS];"
     
       Report.RecordSource = SQL
     
     Else
      DoCmd.Close acForm, "choix document"
      Cancel = True
     End If
    End If
     
    End Sub
    en apparence, il ne compile pas mes differentes requetes.
    pourquoi?

    merci d'avance pour votre aide

  2. #2
    Membre éclairé Avatar de moicats
    Inscrit en
    Mars 2006
    Messages
    299
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 299
    Par défaut
    escusez moi, j'avais effectivement fait une erreur dans ma saisi.

    j'avais oublier un espace aprés chaque " pour la construction des requetes, les mots ainsi attachés n'étaient pas compris par access.

    milles escuses pour le derangement
    je laisse le post il peut servir à d'autre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete sql complexe sous VB6 en access
    Par haytham dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 26/04/2008, 11h08
  2. Aide requete SQL ou fonction VBA
    Par nykola7 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/03/2006, 18h51
  3. Requete SQL complexe
    Par isa21493 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/02/2006, 17h43
  4. Requete sql complexe
    Par ekinoxe dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 11/01/2006, 17h16
  5. Plantage requete SQL simple sous Delphi7/ADO avec Access
    Par tomy29 dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/08/2005, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo