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 :

Erreur: Impossible d'ouvrir plus de tables


Sujet :

VB.NET

  1. #1
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut Erreur: Impossible d'ouvrir plus de tables
    Dans une boucle for de 27 boucles, j'effectue une isolation de mots que j'enregistre dans une base Access si ces mots n'existent pas dans la base. Lorsque la base est vide mon code s'effectue correctement sans erreur.
    Une erreur survient lorsque j'effectue une deuxième fois les 27 boucles et que la table n'est pas vide.

    L'erreur (Impossible d'ouvrir plus de tables) est ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim reader As OleDbDataReader = cmdCritique.ExecuteReader(CommandBehavior.CloseConnection)
    Voici ma boucle for:
    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
     
    For i As Short = 0 To 26
     
                    intNb1 = InStr(intNb1, strCode, "<td class=""title"">")
                    intNb1 = InStr(intNb1, strCode, "href=""")
                    intNb2 = InStr(intNb1, strCode, """ >")
                    strLien = Mid(strCode, intNb1 + 6, intNb2 - intNb1 - 6)
                    intNb1 = InStr(intNb2, strCode, "<")
                    strTitre = Trim(Mid(strCode, intNb2 + 3, intNb1 - intNb2 - 3).Replace(vbLf, ""))
     
     
                    'on met deux aposthrophe si il y en a déjà un afin d'éviter une erreur dans la requete sql
                    If strTitre.Contains("'") = True Then
     
                        strTitre = strTitre.Replace("'", "''")
     
                    End If
     
                    sqlCommand = "SELECT Titre,Lien FROM Critiques Where Titre= '" & strTitre & "'"
     
                    'exécution de la commande
                    cmdCritique = New OleDbCommand(sqlCommand, cnx)
     
                    Dim reader As OleDbDataReader = cmdCritique.ExecuteReader(CommandBehavior.CloseConnection)
     
                    If reader.Read = False Then
     
                        'Création d'une nouvelle ligne
                        dtrCritique = dtsCritique.Tables("Critiques").NewRow
     
                        'on remet un aposthrophe si il y en a 2
                        If strTitre.Contains("''") = True Then
     
                            strTitre = strTitre.Replace("''", "'")
     
                        End If
     
                        dtrCritique("Titre") = strTitre
                        dtrCritique("Lien") = strLien
     
                        'ajout de la ligne dans le DataSet
                        dtsCritique.Tables("Critiques").Rows.Add(dtrCritique)
     
                        'création et exécution du commandbuilder pour mettre à jour le DataAdapter
                        cmdbCritique = New OleDbCommandBuilder(dtaCritique)
     
                        'mise à jour des données du DataAdapter à partir du commandbuilder
     
                            dtaCritique.Update(dtsCritique, "Critiques")
     
                    End If
     
                Next
            Next
    Comment peut-on corriger cette erreur?
    Merci d'avance.

  2. #2
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    Il va etre difficile de t'aider sans que l'on ait l'erreur dans sa totalite
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    si ton code fait bien ce que je pense, c'est dommage de l'écrire comme ca
    j'ai l'impression que plus personne ne sait faire de requete sur ce forum
    car un dataset ne sert à mon sens qu'avec une affichage dans un datagridview, si c'est pour manipuler des données il est contre performant

    donc si ton but c'est de faire des insert/update/delete en fonction de certaines tables dans la base, autant les faire directement ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    j'ai l'impression que plus personne ne sait faire de requete sur ce forum
    car un dataset ne sert à mon sens qu'avec une affichage dans un datagridview, si c'est pour manipuler des données il est contre performant

    donc si ton but c'est de faire des insert/update/delete en fonction de certaines tables dans la base, autant les faire directement ...
    J'utilise un datagridview

    Voici pour les détails de l'erreur
    L'exception System.Data.OleDb.OleDbException n'a pas été gérée par le code utilisateur
    ErrorCode=-2147467259
    Message="Impossible d'ouvrir plus de tables."
    Source="Microsoft Office Access Database Engine"
    StackTrace:
    à System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
    à System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
    à System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
    à System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
    à System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
    à System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
    à prjCritiques.frmMaJTM_Dates.bgwMaJCritiques_DoWork(Object sender, DoWorkEventArgs e) dans C:\Users\Antoine\Documents\Visual Studio 2008\Projects\prjCritiques1\prjCritiques\frmMaJTM_Dates.vb:ligne 886
    à System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
    à System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
    InnerException:

  5. #5
    Membre chevronné Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 682
    Points : 1 952
    Points
    1 952
    Par défaut
    En fait, je pense que tu ne dois pas bien fermer/dispose tes tables apres maj.
    Car d'apres ce que je vois, c'est l'incrementation qui continue.
    Par exemple, tu ouvres une premier fois 10 fichiers, puis ensuite 10 autres, et bien ca fait 20, et si tu continue, ca incremente encore.
    Soit, il faut revoir tes handles pour pas avoir a re-ouvrir les fichiers, soit corriger ce que je t'ai dit.
    Que les neurones soient avec toi, jeune padawan.
    Ne pas oublier, qu'un métier, développer être.
    Effectuer des recherches et lire les tutos, avant de poster, tu dois.
    Aucune question technique, faites par MP, tu ne dois.

  6. #6
    Membre éprouvé Avatar de yonpo
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2010
    Messages
    617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 617
    Points : 947
    Points
    947
    Par défaut
    Cette instruction permet de fermer la connexion après que la commande soit exécutée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim reader As OleDbDataReader = cmdCritique.ExecuteReader(CommandBehavior.CloseConnection)
    Encore une fois, comment cela se fait-il que le code fonctionne la première fois (table vide) mais pas la seconde fois (table non vide)?

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

Discussions similaires

  1. [VB.NET & ACCESS] Erreur "impossible d'ouvrir plus de tables"
    Par GregOizo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/01/2012, 15h20
  2. [AC-2003] Erreur : Impossible d'ouvrir plus de tables
    Par CrankFlash dans le forum Access
    Réponses: 1
    Dernier message: 25/07/2011, 21h39
  3. Erreur Acces : Impossible d'ouvrir plus de tables
    Par Furlisht dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/04/2010, 09h21
  4. [VBA-A] erreur impossible d'ouvrir plus de table
    Par the_senti dans le forum VBA Access
    Réponses: 4
    Dernier message: 19/07/2007, 10h30
  5. [ODBC] Erreur : Impossible d'ouvrir plus de tables
    Par maraly dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 22/03/2007, 17h13

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