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

VB.NET Discussion :

Le processus ne peut pas accéder au fichier


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut Le processus ne peut pas accéder au fichier
    Bonjour à tous,

    J'ai un autre petit problème avec mon programme :
    La première fois que j’exécute cette procédure j'obtiens :
    La base de données a été crée avec succès.
    Si j’exécute une deuxième fois la même procédure pour recréer le même fichier, j'obtiens l’erreur suivante au moment ou le code exécute : mon_fichier.Delete()
    Le processus ne peut pas accéder au fichier 'D:\Projets VB2010\X-Project\X-Project\AppFiles\Base ADOX2.mdb', car il est en cours d'utilisation par un autre processus.
    Ça fait un moment que j'essaye de savoir qu'est ce qui bloque l’accès au fichier et je n'y comprends plus rien

    Si vous pouvait m'aider à comprendre ce qui se passe, ça me serait d'un grand secours.

    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
    Imports ADOX
    Module ADO_X
        Dim Catalog As ADOX.Catalog
        Dim Connstr As String
     
        Public Sub CreateBaseADOX()
            Dim SaveFileDialog As New SaveFileDialog
            Dim strFilePathName As String = Nothing
     
            With SaveFileDialog
                'On spécifie l'extension de fichiers visibles
                .Filter = "All Files (*.*)|*.*|Fichiers mdb (*.mdb) | *.mdb"
                .FilterIndex = 2
                'On affiche et teste le retour du dialogue
                If .ShowDialog = Windows.Forms.DialogResult.OK Then
                    'On récupère le nom du fichier
                    strFilePathName = .FileName
                Else : Exit Sub
                End If
            End With
     
            If strFilePathName.EndsWith(".mdb") Then
            Else
                strFilePathName = strFilePathName & ".mdb"
            End If
     
            Connstr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & strFilePathName & ";Jet OLEDB:Database Password=" & PASSWORDdb & ";" ' & "Jet OLEDB:Engine Type=5"
            Catalog = New ADOX.Catalog
     
            Try
                Dim mon_fichier As New System.IO.FileInfo(strFilePathName)
                If mon_fichier.Exists Then mon_fichier.Delete()
     
                Catalog.Create(Connstr)
                'Call CreateBase()
     
                MsgBox("La base de données a été crée avec succés", MsgBoxStyle.Information)
            Catch ex As Exception
                MsgBox("Echec lors de la création de la base de données", vbCritical)
            End Try
     
               Catalog = Nothing
     
        End Sub

  2. #2
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2012
    Messages : 640
    Points : 372
    Points
    372
    Par défaut
    Bon, je crois que j'ai résolu le problème mais je comprends pas trop :
    Il faut rajouter ce bout de code pour libérer le fichier attaché au Processus crée par Catalog.Create.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                System.Runtime.InteropServices.Marshal.ReleaseComObject(Catalog)
                Catalog = Nothing
                GC.Collect()
    Ca serait interressant d'avoir des explications sur le fait de devoir faire intervenir le GarbageCollector. Tous ceci me parait bizard...

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 28/10/2009, 23h17
  2. Réponses: 22
    Dernier message: 02/10/2009, 10h31
  3. Réponses: 7
    Dernier message: 22/08/2008, 16h20
  4. Réponses: 5
    Dernier message: 26/06/2008, 12h28
  5. Erreur : Le processus ne peut pas accéder au fichier
    Par victor72 dans le forum Dev-C++
    Réponses: 1
    Dernier message: 16/03/2007, 14h50

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