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

Accès aux données Discussion :

[Access] ERROR [HY000] L'opération doit utiliser une requête qui peut être mise à jour.


Sujet :

Accès aux données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut [Access] ERROR [HY000] L'opération doit utiliser une requête qui peut être mise à jour.
    Bonjour à tous,

    J’ai une application en VB.NET qui utilise une base de données sous Access, je rencontre aléatoirement l’erreur
    ERROR [HY000] [Microsoft][Pilote ODBC Microsoft Access] L'opération doit utiliser une requête qui peut être mise à jour.
    sur mes requêtes INSERT, ce qui est étrange c’est qu’avec le même jeu d’essai XLS (car j'importe des données d'un excel vers la BDD), parfois j’arrive à l’insérer intégralement, d’autres fois il tombe en erreur sur la fin du jeu, au milieu ou au début, si encore ca tombait en rade à une requête précise je comprendrais … Mais là je dois avouer sécher.

    Voici le code type de mes requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        Public Shared Sub inserer(ByVal uneentreprise As entreprise)
            Try
                Dim cmd As Odbc.OdbcCommand
                Dim ctn As Odbc.OdbcConnection = AccesBase.seConnecter
                cmd = ctn.CreateCommand()
                cmd.CommandType = CommandType.Text
                cmd.CommandText = "INSERT INTO Entreprise(IdEntreprise,FormeJuridique,Compte,IdResponsableConseil,ChiffreAffaireHP) VALUES ('" & uneentreprise.IdEntreprise.ToString & "','" & Replace(uneentreprise.FormeJuridique, "'", "''") & "','" & Replace(uneentreprise.CompteEntreprise, "'", "''") & "','" & uneentreprise.IdResponsableConseil & "','" & uneentreprise.ChiffreAffaireHP & "')"
                cmd.ExecuteNonQuery()
                AccesBase.seDeconnecter(ctn)
            Catch ex As Exception
                Throw ex
            End Try
        End Sub



    Et le code de connection / déconnection à la base de données :

    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
     
        Public Shared Function seConnecter() As Odbc.OdbcConnection
     
            Dim ctn As Odbc.OdbcConnection
            ctn = Nothing
            Try
                ctn = New Odbc.OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Application.ExecutablePath.Substring(0, Application.ExecutablePath.LastIndexOf("\")) & "\fichiers\xxx.mdb;UID=;PWD=")
                ctn.Open()
            Catch ex As Exception
                ctn = Nothing
                Throw ex
            Finally
                seConnecter = ctn
            End Try
        End Function

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Public Shared Sub seDeconnecter(ByVal ctn As Odbc.OdbcConnection)
            Try
                If Not ctn Is Nothing AndAlso ctn.State = ConnectionState.Open Then
                    ctn.Close()
                    ctn = Nothing
                End If
            Catch ex As Exception
                Throw ex
            End Try
        End Sub

    J'ai lu qu'il s'agissait peut être d'un problème de droits, mais le problème justement c'est ce problème intervient aléatoirement, à moins que c'est un problème de fermeture / ouverture de base successive, vu que je fais les requêtes les unes à la suite des autres dans la phase d'importation, je ne sais pas trop :/

    Avez vous déjà rencontrer ce cas ?
    Merci d'avance pour vos lumières !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    J'ai une piste, si j'ouvre la base de données .mdb sur mon poste et que je la laisse ouverte, je lance mon programme et mon import, je n'ai plus ce message d'erreur. Mais ce n'est pas une solution je pense :/

  3. #3
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Tu appels la fonction insérer en boucle c'est çà?
    SI c'est le cas essayes déjà de ne pas ouvrir/fermer tes connection à chaque fois
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Merci de ta réponse , c'est tout à fait ca, une boucle d'insertion.
    Je vais tester ton idée je pense en effet que ca doit être ça le problème !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Points : 61
    Points
    61
    Par défaut
    Je reviens vers ce problème, car je pense bien que c'est ca la solution mais je n'arrive pas à la mettre en œuvre techniquement, quelqu'un aurait un exemple de code de connexion persistante pendant l'application ?

  6. #6
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Par exemple au lieu d'appeler la fonction inserer en boucle
    Crée en une autre prenant en paramètre une liste d'entreprise.
    Au début de cette nouvelle fonction tu ouvre ta connexion.... tu fais ensuite tes insertions puis seulement à la fin de la fonction tu fermes ta connexion...

    Ainsi tu n'ouvres qu'une fois ta connexion pour l'ensemble des insert...
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/02/2010, 07h41
  2. Réponses: 0
    Dernier message: 17/01/2010, 17h42
  3. Réponses: 1
    Dernier message: 18/12/2009, 10h29
  4. Réponses: 1
    Dernier message: 23/05/2008, 11h45
  5. Réponses: 7
    Dernier message: 29/04/2008, 12h16

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