Access 2010 : requête qui ignore des données

Résolu
Phoenellion Messages postés 131 Statut Membre -  
Phoenellion Messages postés 131 Statut Membre -
Bonjour,

je passe par access pour regrouper deux tables (détail et facture) de manière à compléter la table détails avec les informations contenues dans la table facture quand elles existent.

voici donc le code de ma requête :
"SELECT " & Store & "_detail.*, " & Store & "_facture.TYPFACT, " & Store & "_facture.DATFACT INTO " & Store & "_DetFact " & _  
    "FROM " & Store & "_detail INNER JOIN " & Store & "_facture ON " & Store & "_detail.NUMFACT = " & Store & "_facture.NUMFACT;"


Malheureusement, Access me zappe une quantité incroyable de données.
La table facture contient les dates de facturation, et s'étend d'une période de janvier 2009 à aujourd'hui.
Pour une raison que j'ignore, parfois, la requête fonctionne, et parfois, je me retrouve avec seulement une partie des informations, et je m'en rendse vite compte quand dans le résultat de la requête je me retrouve avec toute une année manquante.

Access serait-il limité dans la taille des tables pour éxécuter ses requêtes ?

J'ai trouvé une boucle en pure VB pour contourner la requête mais c'est bien plus long donc j'aimerais bien trouver une solution à ce bug de requête.

@+
Phoe

3 réponses

  1. Phoenellion Messages postés 131 Statut Membre 33
     
    Petit détail qui vient de m'apparaître :

    déjà voici le code complet utilisé pour ma requête :
    Sub Compil_DetFact()
    Chemin_Gestock = "C:\Users\NHBC\Documents\Travaux Gestion Stocks\Compilations tables\AcImport\"
    
    For Compteur = 1 To 10
        Store = Choose(Compteur, "DC", "BD", "SDN", "DT", "KD", "SDN-II", "MB", "MD", "PBT", "PD")
        Chemin_DBF = "D:\DATA\XLPM2\" & Store & "\"
    
        'Import Detail et Facture dans Access
        DoCmd.TransferSpreadsheet acImport, , "Detail", Chemin_Gestock & "Detail " & Store & ".xlsx", 1
        DoCmd.TransferSpreadsheet acImport, , "Facture", Chemin_Gestock & "Facture " & Store & ".xlsx", 1
        
        ' Déclaration Clé Primaire Facture
        Prime_Key = "CREATE UNIQUE INDEX MyIndex ON Facture (NUMFACT) With Primary"
        DoCmd.RunSQL Prime_Key
    
        ' Envoi Requête pour DetFact
        My_Querry = "SELECT Detail.NART, Detail.QTE, Facture.TYPFACT, Facture.DATFACT INTO DetFact " & _
        "FROM Detail INNER JOIN Facture ON Detail.NUMFACT = Facture.NUMFACT;"
        DoCmd.RunSQL My_Querry
        
        ' Extraction DetFact vers Excel
        DoCmd.TransferSpreadsheet acExport, , "DetFact", Chemin_Gestock & "Base DetFact " & Store & ".xlsx", 1
    
        ' Supression des tables
        DoCmd.RunSQL "drop table Detail"
        DoCmd.RunSQL "drop table Facture"
        DoCmd.RunSQL "drop table DetFact"
        
    Next Compteur
    End Sub
    


    dans la table détail, il y a en fait le détail de toutes les ventes enregistrée. j'ai donc plusieurs fois le même numéro de facture qui apparait, je me suis laissé dire que c'est peu être la cause de mon malheure, même si je ne vois pas comment.
    0
  2. Phoenellion Messages postés 131 Statut Membre 33
     
    Re,

    J'ai beau retourner le problème dans tous les sens, toujours pas d'améliorations.

    Etant persuadé que je me plante dans mes requêtes, j'ai creusé un peu le domaine donc j'ai quelque peu modifié le programme comme suit :

    Sub Compil_DetFact()  
    Set xlApp = CreateObject("Excel.Application")  
    xlApp.ScreenUpdating = False  
    Chemin_Gestock = "C:\Users\NHBC\Documents\Travaux Gestion Stocks\Compilations tables\AcImport\"  
    
    For Compteur = 1 To 10  
        Store = Choose(Compteur, "DC", "BD", "SDN", "DT", "KD", "SDN-II", "MB", "MD", "PBT", "PD")  
        Chemin_DBF = "D:\DATA\XLPM2\" & Store & "\"  
        If Store = "BD" Then  
            Tier = 9000  
        Else: Tier = 9900  
        End If  
          
        xlApp.Workbooks.Open FileName:=Chemin_DBF & "detail.dbf"  
        xlApp.ActiveWorkbook.SaveAs FileName:=Chemin_Gestock & "Detail " & Store & ".xlsx"  
        xlApp.ActiveWorkbook.Close  
          
        xlApp.Workbooks.Open FileName:=Chemin_DBF & "facture.dbf"  
        xlApp.ActiveWorkbook.SaveAs FileName:=Chemin_Gestock & "Facture " & Store & ".xlsx"  
        xlApp.ActiveWorkbook.Close  
          
        'Import Detail et Facture dans Access  
        DoCmd.TransferSpreadsheet acImport, , "Detail", Chemin_Gestock & "Detail " & Store & ".xlsx", 1  
        DoCmd.TransferSpreadsheet acImport, , "Facture", Chemin_Gestock & "Facture " & Store & ".xlsx", 1  
          
        ' Requêtes de préparation pour Detail  
        My_Querry = "SELECT detail.NUMFACT, detail.NART, detail.QTE INTO Prépa_Détail " & _  
        "FROM Detail;"  
        DoCmd.RunSQL My_Querry  
    
        ' Requêtes de préparation pour Facture  
        My_Querry = "SELECT facture.NUMFACT, facture.TYPFACT, facture.DATFACT INTO Prépa_Facture " & _  
        "FROM facture " & _  
        "WHERE (((facture.TYPFACT)=""A"" Or (facture.TYPFACT)=""F"") AND ((facture.TIERS)<=9900)) " & _  
        "ORDER BY facture.NUMFACT;"  
        DoCmd.RunSQL My_Querry  
          
        ' Déclaration Clé Primaire Facture  
        Prime_Key = "CREATE UNIQUE INDEX MyIndex ON Prépa_Facture (NUMFACT) With Primary"  
        DoCmd.RunSQL Prime_Key  
          
        ' Requêtes de consolidation pour DetFact  
        My_Querry = "SELECT detail.NART, detail.QTE, Prépa_Facture.TYPFACT, Prépa_Facture.DATFACT INTO Prépa_DetFact " & _  
        "FROM detail INNER JOIN Prépa_Facture ON detail.NUMFACT = Prépa_Facture.NUMFACT " & _  
        "ORDER BY detail.NART, Prépa_Facture.DATFACT DESC;"  
        DoCmd.RunSQL My_Querry  
    
        ' Extraction DetFact vers Excel  
        DoCmd.TransferSpreadsheet acExport, , "Prépa_DetFact", Chemin_Gestock & "Base DetFact " & Store & ".xlsx", 1  
    
        ' Supression fichiers et des tables temporaires  
        Kill Chemin_Gestock & "Detail " & Store & ".xlsx"  
        Kill Chemin_Gestock & "Facture " & Store & ".xlsx"  
        DoCmd.RunSQL "drop table Detail"  
        DoCmd.RunSQL "drop table Facture"  
        DoCmd.RunSQL "drop table Prépa_Détail"  
        DoCmd.RunSQL "drop table Prépa_Facture"  
        DoCmd.RunSQL "drop table Prépa_DetFact"  
          
    Next Compteur  
    End Sub


    je me rends compte maintenant qu'à l'importation, la colonne de date (DATFACT) est considérée comme du texte, alors que dans le fichiers excel source, c'est bien une colonne date.
    C'est peut être la base du problème ?
    De plus, j'aimerais conserver les lignes de la table détail qui n'ont pas de correspondance avec la table facture.

    Je retourne bucher en attendant qu'un cerveau plus fécond que le mien ne passe par là.

    @+
    Phoe
    0
  3. Phoenellion Messages postés 131 Statut Membre 33
     
    Re bonjour,

    je repasse par là juste pour signaler que le code roule parfaitement, après mille et unes vérifications, j'ai fini par douter de la BDD elle même et il s'est avéré qu'elle était corrompue.

    Affaire classée !

    @+ phoe
    0