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

VBA Access Discussion :

Problème lié à l'utilisation de CreateQueryDef [AC-365]


Sujet :

VBA Access

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    636
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 636
    Points : 362
    Points
    362
    Par défaut Problème lié à l'utilisation de CreateQueryDef
    Bonjour

    Mon code plante sur la ligne TransferSpreadsheet. Le moteur de données n'a pas pu trouver l'objet QryExportXLS
    Il est pourtant bien créé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim q As DAO.QueryDef
    DoCmd.DeleteObject acQuery, "QryExportXLS"
    Set q = CurrentDb.CreateQueryDef("QryExportXLS", StrSql)
    DoCmd.TransferSpreadsheet acExport, , "QryExportXLS", StrFile, True
    DoCmd.DeleteObject acQuery, "QryExportXLS"
    Quelqu'un aurait une idée ?

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    636
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 636
    Points : 362
    Points
    362
    Par défaut
    J'ai oublié de préciser que cette routine a fonctionné pendant plusieurs mois !
    Au cas où on me le demande, je construis StrSql et StrFile
    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
    StrCritere = ""
    StrSql = "SELECT QryFicheConfReport.*, Utilisateurs.Nom FROM QryFicheConfReport INNER JOIN Utilisateurs ON QryFicheConfReport.fiuser = Utilisateurs.ID"
    If Not IsNull(Me.CmbType) Then
        StrFile = CurrentProject.Path & "\Reporting\" & "Report" & Me.CmbType & ".xlsx"
        StrCritere = " Where fitype = " & Chr(34) & Me.CmbType & Chr(34)
    Else
        StrFile = CurrentProject.Path & "\Reporting\" & "ReportALL.xlsx"
    End If
    If Not IsNull(Me.CtlDateDebut) Then
        If StrCritere = "" Then
            StrCritere = " Where fidate >=#" & Format(Me.CtlDateDebut, "MM/DD/YYYY") & "#"
        Else
            StrCritere = StrCritere & " And fidate >=#" & Format(Me.CtlDateDebut, "MM/DD/YYYY") & "#"
        End If
    End If
    If Not IsNull(Me.CtlDateFin) Then
        If StrCritere = "" Then
            StrCritere = " Where fidate <#" & Format(Me.CtlDateFin + 1, "MM/DD/YYYY") & "#"
        Else
            StrCritere = StrCritere & " And fidate <#" & Format(Me.CtlDateFin + 1, "MM/DD/YYYY") & "#"
        End If
    End If
    StrTri = " Order by fitype, fidate"
    StrSql = StrSql & StrCritere & StrTri

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    636
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 636
    Points : 362
    Points
    362
    Par défaut
    Je vais utiliser une autre méthode
    Je clos le ticket

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 389
    Points : 2 022
    Points
    2 022
    Par défaut
    Salut,

    Ce n'est pas très prudent de supprimer une requête sans s'assurer qu'elle existe au préalable.
    Tu peux vérifier son existence via la collection QueryDefs.

    Et tant qu'a faire, écrire une fonction utilitaire permettant de vérifier la présence d'un item quelconque dans une collection quelconque:
    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
    Option Explicit
    Public Function ExistInCollection(ByVal Key As String, ByVal Col As Object) As Boolean
        ExistInCollection = ExistInCollectionByVal(Key, Col) Or ExistInCollectionByRef(Key, Col)
    End Function
     
    Private Function ExistInCollectionByVal(ByVal Key As String, ByVal Col As Object) As Boolean
    On Error Goto Error
        Dim Item As Variant
        Item = Col(Key)
        ExistInCollectionByVal = True
    Exit Function
    Error:
        ExistInCollectionByVal = False
    End Function
     
    Private Function ExistInCollectionByRef(ByVal Key As String, ByVal Col As Object) As Boolean
    On Error Goto Error
        Dim Item As Variant
        Set Item = Col(Key)
        ExistInCollectionByRef = True
    Exit Function
    Error:
        ExistInCollectionByRef = False
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Db As DAO.Database
    Set Db = CurrentDb
     
    If(ExistInCollection("QryExportXLS", Db.QueryDefs)) Then
        Db.QueryDefs.Delete "QryExportXLS"
    End If
     
    Dim q As DAO.QueryDef
    Set q = Db.CreateQueryDef("QryExportXLS", StrSql)
    DoCmd.TransferSpreadsheet acExport, , "QryExportXLS", StrFile, True
    Db.QueryDefs.Delete "QryExportXLS"

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

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 16h57
  2. Réponses: 5
    Dernier message: 11/06/2002, 16h21
  3. Réponses: 4
    Dernier message: 05/06/2002, 15h35
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 13h36
  5. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 17h01

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