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 :

Occurence présente dans une table [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    Mars 2010
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2010
    Messages : 180
    Par défaut Occurence présente dans une table
    Bonjour,

    Je suis en train de développer une BDD me permettant de retrouver les photos stockées sur le disque dur sur un sujet précis. Pour se faire et suivant les différents tutoriels trouvés sur ce site,j' enregistre le chemin,le nom et l’extension de chaque photo dans la base. Cette importation s' effectue par dossier complet
    Mon soucis est le suivant.
    Afin d' éviter les doublons d' importations de chemins, je veux vérifier si ce fichier existe déjà. J' ai bien trouvé quelques début de solutions dans ce forum, mais je n' ai pas su les adapter à mon problème. Je joins le code en question en espérant vous donner suffisamment d' informations pour vous permettre de comprendre mon problème
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    Sub SltDsrMg()
     
        Dim fd As Office.FileDialog
        Dim ChmSlct As String: Dim Nbfch1 As Integer
        Dim oRst As DAO.Recordset
        Dim oDb As DAO.Database
        Dim tbl1 As DAO.TableDef
        Dim NbFchMprt As Integer: Dim NbFchXst As Integer
        Dim Msg As String
        Dim RChm As String
        Dim x As Integer: Dim y As Integer
     
        Set oDb = CurrentDb
        Set fd = Application.FileDialog(msoFileDialogFolderPicker)
        ' Ce formulaire affiche tous les chemins enregistrés
        DoCmd.OpenForm "F_DsrMg", acNormal, "", "", acFormEdit, acWindowNormal
        fd.Title = "Sélectionnez un dossier..."
     
        If fd.Show() Then
     
            ChmSlct = fd.SelectedItems(1) & "\"
            ' x représente le nombre de chemins déjà dans la base
            x = DCount("ChmRgn", "R_DsrMg")
            For y = 0 To x
                If IsNull(Forms!F_DsrMg!ChmRgn) Then
                    MsgBox "Votre base de données ne contient aucun fichier", vbDefaultButton1
                    y = x
                    Else
    'Début du problème: je ne sais pas boucler sur chaque occurence afin de contrôler la 'présence du chemin
                        If Forms!F_DsrMg!ChmRgn <> ChmSlct Then
                            MsgBox " Le dossier sélectionné n' est pas dans la base", vbDefaultButton1
    ' Dans un premier temps s' arrêter ici car pour la suite, je préfére tester le résultat avant 'de vous importuner sur une solution que je peux peut-être trouver!!!
                            Else
                            If Forms!F_DsrMg!ChmRgn = ChmSlct Then
                                MsgBox "Ce dossier est déjà enregistré", vbDefaultButton1
                                Exit Sub
                            End If
                        End If
                    End If
            Next y
            ' compte le nombre de fichier dans le dossier sélectionné
            Nbfch1 = NbFch(ChmSlct) - 1
            'contrôle que la table TP_Chm n'existe pas
            For Each tbl1 In CurrentDb.TableDefs
                If tbl1.Name = "TP_Chm" Then
                    DoCmd.RunSQL "DROP Table " & "TP_Chm" 'efface la table si elle existe
                    Exit For
                End If
            Next
        'Création de la table TP_Chm
        If IsNull(Forms!F_DsrMg!ChmRgn) Then
            NbFchXst = 0
            Else
                RChm = "SELECT T_Pht.Cf_Pht, T_Pht.ChmRgn, T_Pht.NmFch INTO TP_Chm"
                RChm = RChm & "FROM T_Pht;"
                DoCmd.RunSQL RChm
                'Compte le nombre de fichier existant dans la base
                NbFchXst = DCount("Cf_Pht", "TP_Chm")
        End If
        DoCmd.Close acForm, "F_DsrMg", acSaveNo
        'Compare le nombre de fichiers à importer et le nombre de fichier existant dans votre base
        If NbFchXst = Nbfch1 Then
            MsgBox "Ce dossier existe dans la base de donnée. Il est complet", vbDefaultButton1
            Exit Sub
            Else
            If NbFchXst < Nbfch1 Then
                Msg = " La base de donnée contient " & NbFchXst & " cliché(s) sur " & Nbfch1 & ""
                Msg = Msg + " à importer. Faut-il continuer l' importation de ce dossier "
                If MsgBox(Msg, vbExclamation + vbYesNo) = vbYes Then
                    ChgMg ChmSlct, "*.jpg"
                    ChgMg ChmSlct, "*.bmp"
                    Else
                    Exit Sub
                End If
            End If
        End If
        End If
     
        Set fd = Nothing
     
    End Sub
    Cordialement

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Bonjour,

    Beaucoup plus simplement,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dcount("*","MaTable","MonDossier='" & ChmSlct & "'")
    renvoie 0 si le dossier n'existe pas ou le nombre de photos dans le dossier

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    Mars 2010
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2010
    Messages : 180
    Par défaut Fonction Dcount
    Bonjour,

    Je vous remercie de votre réponse. depuis cette information, j' essaie de la mettre en pratique sans succés. En fait, je bute sur la deuxième partie de l' expression, a savoir:
    ("MonDossier='" & ChmSlct & "'").
    Pourriez-vous m' en dire plus sur le sens de cette expression?

    Cordialement

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Bonjour,
    Si je puis me permettre, un peu de recherches dans l'aide d'access t'aurait donné la réponse. Pour ce faire, il faut placer le curseur sur le mot clé recherché (ici Dcount) et appuyer sur F1.

    Citation Envoyé par Aide d'Access
    Une expression-chaîne facultative servant à limiter la plage des données sur laquelle porte la fonction CpteDom (DCount). Par exemple, critère est souvent équivalent à la clause WHERE d'une expression SQL sans le mot WHERE. En cas d'omission de critère, la fonction CpteDom évalue expression par rapport à l'intégralité du domaine. Chaque champ compris dans critère doit l'être aussi dans domaine, sans quoi la fonction CpteDom (DCount) retourne la valeur Null.

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité de l' industrie
    Inscrit en
    Mars 2010
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Retraité de l' industrie
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2010
    Messages : 180
    Par défaut Si je puis me permettre
    Bonjour,

    Pas de soucis, il est normal de rappeler qu' un minimum de recherche est souhaitable avant de poster un message.
    En fait,j' utilise très souvent la touche F1 mais rarement avec de grands résultats. Ce qui me chagriné dans votre réponse c' est le terme de "Mondossier". Ce n' est qu'après une longue cogitation que j' ai compris qu' il s' agissait tout bêtement du champ dans lequel je stocke les chemins des photos!!!
    Autant pour moi

    A une autre fois peut-être

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

Discussions similaires

  1. Champ présent dans une table Firebird mais pas dans TIBDataSet
    Par Mirmillon dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/12/2007, 00h41
  2. [VBA] fonction qui donne la valeur présente dans une table
    Par zanou666 dans le forum VBA Access
    Réponses: 7
    Dernier message: 25/09/2007, 17h33
  3. [MySQL] Utiliser la valeur d'un limit présent dans une table
    Par gwena54 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/07/2007, 21h08
  4. Réponses: 4
    Dernier message: 25/06/2007, 15h05
  5. [MySQL] Comment récupérer le nombre d'élément présent dans une table
    Par TrX314 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/04/2007, 21h20

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