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 :

Soucis de déconnexion ODBC


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Soucis de déconnexion ODBC
    Bonjour, j'ai un soucis non bloquant que j'aimerais bien résoudre, je vous le présente: j'ai une application qui permet à l'utilisateur de faire le bascule entre 2 bases de données A et B (par défaut, la connexion dans la base A). Dans mon programme, l'utilisateur a la possibilité de faire des enregistrements dans 2 bases de données Sage, la base A va faire des enregistrements dans la base SageA, et B dans la base SageB.

    Notre client se connecte dans un premier temps dans la base B et fait ses enregistrements dans la base SageB, ensuite, il passe à la base A, et quand il essaye de faire ses enregistrements dans la base SageA, il obtient l'erreur qu'il ne s'est pas déconnecté de la base SageA (il dit pourtant que ce n'est pas le cas), les enregistrements deviennent ainsi impossible. Afin de résoudre cela, il ferme l'application, l'ouvre ensuite et commence à faire ses enregistrements dans la base SageA, et là, ça marche.
    Est-ce qu'il y aurait un moyen de résoudre ce problème?

    je vous présente des bouts de code de mon programme, quand l'utilisateur veut faire ses enregistrements dans la base SageA ou dans SageB
    Code VB : 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
     
    Dim myConnC As Odbc.OdbcConnection
    Dim myCommandC As New Odbc.OdbcCommand
     
    Dim local_connexion As String
    myConnC = New Odbc.OdbcConnection
    local_connexion = "DSN=xxxxxx;UID=xxxxxxxx;PWD=xxxxxxx;"
    myConnC.ConnectionString = local_connexion
    If myConnC.State = ConnectionState.Open Then
         myConnC.Close()
    End If
    myConnC.Open()
    myCommandC.Connection = myConnC
     
    myCommandC.CommandText = "ma requête INSERT dans la base SageA ou dans SageB"
    myCommandC.CommandType = CommandType.Text
    Application.DoEvents()
    Try
         myCommandC.ExecuteNonQuery()
    Catch ex As Exception
         MsgBox(ex.Message)
         End
    End Try
     
    Application.DoEvents()
    myConnC.Close()

    Cependant, notre client doit faire ses enregistrements chaque vendredi matin, vers 9h - 9h30, afin qu'il puisse tester de nouveau, il faudra alors attendre vendredi prochain. Merci par avance si vous arrivez à résoudre ce soucis

    EDIT: après chaque appel de myConnC.close(), j'ai ajouté myConnC.Dispose(), et à la fin des enregistrements dans la base SageA ou dans SageB, j'ai ajouté myConnC = Nothing
    Dernière modification par Invité ; 07/11/2014 à 11h16.

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    En premier lieu utilise un bloc Using pour la connexion au lieu du .Close et .Dispose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Using x As New Connection
       x.Open
       'mes petites affaires avec la BD
    End Using

  3. #3
    Membre expérimenté Avatar de ShadowTzu
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Par défaut
    en cas d'erreur myConnC est toujours "Open"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    myConnC.Open()
    myCommandC.Connection = myConnC
     
    myCommandC.CommandText = "ma requête INSERT dans la base SageA ou dans SageB"
    myCommandC.CommandType = CommandType.Text
    Application.DoEvents()
    Try
         myCommandC.ExecuteNonQuery()
    Catch ex As Exception
         MsgBox(ex.Message)
         'myConnC.Close()
         'myConnC.Dispose()
         End
    End Try
    Il faut faire très attention avec les Try Catch, je te propose de tous les virer de ton applications et essayé de gérer proprement la destruction des classes en cas d'erreur.

Discussions similaires

  1. [CognosScript] Encore des soucis avec une connexion ODBC
    Par ben_harper dans le forum Cognos
    Réponses: 1
    Dernier message: 23/06/2009, 19h08
  2. [Kylix] PostgreSql via ODBC
    Par doykati dans le forum EDI
    Réponses: 3
    Dernier message: 08/02/2007, 10h10
  3. [Sybase] Pilote ODBC Sybase sous NT 4.0
    Par SoaB dans le forum Sybase
    Réponses: 2
    Dernier message: 23/10/2002, 12h27
  4. [filemaker pro]odbc et dsn less
    Par google dans le forum Autres SGBD
    Réponses: 7
    Dernier message: 24/06/2002, 15h26
  5. Connexion ODBC
    Par Anonymous dans le forum Réseau
    Réponses: 2
    Dernier message: 23/04/2002, 12h10

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