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

Windows Forms Discussion :

[Vb.net 2003] Access.Application / Problème de fermeture d'Access


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 3
    Points
    3
    Par défaut [Vb.net 2003] Access.Application / Problème de fermeture d'Access
    Bonjour à tous.

    Dans mon programme je manipule une base access que je dois parfois ouvrir pour effectuer des opérations.

    Par exemple, j'ouvre la base et je récupère tout les Etats qu'ensuite je liste dans une listebox dans mon programme dotnet.

    Voici mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Private Sub form_administrer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ac = New Access.Application
            ac.OpenCurrentDatabase(chemin_base, False)
            ac.CloseCurrentDatabase()
            ac.Quit()
        End Sub
    ps : mon ac est en global : Dim ac as Access.Application

    Ceux qui ont manipulé ce genre d'objet savent que ca ouvre la base et simplement la referme et ferme le programme access. Voila quelque chose de normal et c'est justement ce que je veux mais des que je rajoute des opérations entre l'ouverture et la fermeture, la fermeture ne s'effectue pas.

    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
        Private Sub form_administrer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ac = New Access.Application
            ac.OpenCurrentDatabase(chemin_base, False)
            rs = ac.CurrentDb.OpenRecordset("SELECT nom_chapitre FROM chapitre WHERE identification_chapitre = " & Chr(34) & ident_chap & Chr(34) & " ORDER BY numero_chapitre;", dao.RecordsetTypeEnum.dbOpenDynaset)
            Do While Not rs.EOF
                Me.lst_report.Items.Add(rs.Fields("nom_chapitre").Value)
                rs.MoveNext()
            Loop
            rs = Nothing
            ac.CloseCurrentDatabase()
            ac.Quit()
            ac = Nothing
        End Sub
    Mon code s'excute bien, ma liste est remplis, ma base se ferme, access se ferme et ... se r'ouvre !!!!
    Si j'essaye de cliquer sur l'onglet fermeture, access se ferme et ... se r'ouvre encore, etc ...

    De plus, le plus étrange, lorsque je met des points d'arrets à ma fonction et que j'excute le code en pas à pas, la, cela marche parfaitement, la base se ferme bien, access aussi et ne s'ouvre plus.

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Je ne connais pas la réponse à ton soucis, mais pourquoi lancer Access pour faire une simple requête ?

    Il te suffit simplement d'ouvrir un connexion comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ' En global
    Public cCurrentConnection As New OleDbConnection
    ...
    Public Sub OpenCnnDB()
    If cCurrentConnection.State = ConnectionState.Closed Then
        cCurrentConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""Mabasetoto.mdb"""
        cCurrentConnection.Open()
    End If
    End Sub
    Et là tu travailles sur cette connexion, c'est bien plus performant et en plus le type de BDD importe peu.

    Nota :si tu codes en VB.NET, utilise plutôt ADO.NET, c'est pas intuitif si tu viens d'Access mais c'est bien plus puissant.

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Declaration Access
    Bonjour,

    Je n'ai pas la réponse à ton post.
    J'aimerais savoir comment tu déclare le "Access.Application"
    Faut il ajouter une librairy si oui comment ?
    J'avais ceci avant en VB6 mais j'arrive pas à trouver la déclaration Acess en VB.net
    Merci par avance

    Set appAccess = New Access.Application
    With appAccess
    .OpenCurrentDatabase strDataBaseName
    .Visible = False
    .DoCmd.SetWarnings False 'pas de messages d'avertissements
    .DoCmd.TransferText acImportDelim, "Importlog", "T_Log", strFichLog, False
    .CloseCurrentDatabase
    End With

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2006, 10h28
  2. Problème de requête dans Access 2003
    Par charleshbo dans le forum Access
    Réponses: 2
    Dernier message: 14/02/2006, 19h47
  3. Réponses: 3
    Dernier message: 03/10/2005, 10h01
  4. Réponses: 1
    Dernier message: 03/05/2005, 09h12
  5. Problème de fermeture de l'application
    Par SkyDev dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 02h06

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