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 :

vidange d'une DB de +- 30.000 records en ACCESS


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut vidange d'une DB de +- 30.000 records en ACCESS
    existe t'il une commande qui permet de vidé une table access en une operation ou presque, genre drop comme dans SQL

    Merci

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 539
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 539
    Par défaut
    Access interprète aussi le SQL ; donc il suffit de faire "DELETE * FROM nom_de_table" ou même "DROP TABLE"...
    sinon créer des recordsets et effacer chaque enregistrement avec une boucle mais c'est pas très subtil

  3. #3
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Ceci est il bon alors ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim dtr As DataRow
                Dim daArticle As OleDb.OleDbDataAdapter
     
     
                daArticle = New OleDb.OleDbDataAdapter("DELETE FROM C2000", My.Settings.CnxIsd)

  4. #4
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut message d'erreur en suppriment de enregistrement ACCESS
    Message que je reçois lors de la suppression de +-27500 records

    Le CLR n'a pas pu effectuer de transition du contexte COM 0xfcdd0 au contexte COM 0xfcf40 pendant 60 secondes. Le thread qui possède le contexte/cloisonnement de destination est probablement en train d'attendre ou de traiter une opération très longue sans pompage des messages Windows. Cette situation a généralement des effets négatifs sur les performances et peut parfois entraîner le blocage de l'application ou une utilisation ininterrompue de la mémoire. Pour éviter ce problème, tous les threads STA (Single Threaded Apartment) doivent utiliser des primitives d'attente de pompage (par exemple CoWaitForMultipleHandles) et pomper de manière régulière les messages lors des opérations qui sont longues à s'exécuter.
    Why ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Par défaut
    es tu sous windows 2000? Je sais qu'il y'avait des problèmes de ce côté là sous cet OS. Cependant il existe un patch correctif.
    Tiens nous au courant

  6. #6
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 539
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 539
    Par défaut
    Eh non !
    D'après le MSDN il faut prendre plutot OleDbCommand et non OleDbDataAdapter !
    OleDbDataAdapter sert à établir le lien avec une bdd c'est OleDbCommand qui va réaliser la requete SQL a proprement parlé.

    Dim conn As New OleDbConnection(connection)
    Dim adapter As New OleDbDataAdapter()
    Dim query As String
    query="DELETE * FROM"
    adapter.SelectCommand = new OleDbCommand(query, conn)
    Donc il suffit de passer la bonne "query" au constructeur de OleDbCommand

  7. #7
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Citation Envoyé par hubertfabien
    es tu sous windows 2000? Je sais qu'il y'avait des problèmes de ce côté là sous cet OS. Cependant il existe un patch correctif.
    Tiens nous au courant

  8. #8
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Citation Envoyé par hubertfabien
    es tu sous windows 2000? Je sais qu'il y'avait des problèmes de ce côté là sous cet OS. Cependant il existe un patch correctif.
    Tiens nous au courant
    Non je suis sous Vista Ultimate

    j'essaye ceci

    Dim conn As New OleDbConnection(connection)
    Dim adapter As New OleDbDataAdapter()
    Dim query As String
    query="DELETE * FROM"
    adapter.SelectCommand = new OleDbCommand(query, conn)
    mais sa ne marche pas voici l'adaptation voir si ok merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim adapter As New OleDb.OleDbDataAdapter()
                Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Logiwin\isd.mdb")
     
                adapter.SelectCommand = New OleDb.OleDbCommand("DELETE * FROM C2000", conn)

  9. #9
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Essayes plutôt :
    Dim strSqlQuery As String = "DELETE FROM C2000"
    Dim cmd As New OleDb.OleDbCommand(strSqlQuery, LaConnectionQuiVaBien)
    cmd.ExecuteNonQuery()

    Je pense que ça sera suffisamment rapide pour éviter de titiller le ContextSwitchDeadlock qui lève ton message "Le CLR...

    Nota : affecter un ordre Delete à un SelectCommand d'un dataadapter me semble assez douteux.

    Cdt.

  10. #10
    Membre éprouvé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Par défaut
    Voici l'adaptation pour moi, et c'est le pied grand merci



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Dim conn As New OleDb.OleDbConnection(" Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Logiwin\isd.mdb")
                conn.Open()
                Dim cmd As New OleDb.OleDbCommand("DELETE FROM C2000", conn)
                cmd.ExecuteNonQuery()
                conn.Close()

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 02/07/2008, 12h29
  2. Réponses: 11
    Dernier message: 05/02/2008, 18h05
  3. Réponses: 1
    Dernier message: 01/10/2007, 18h09
  4. Réponses: 9
    Dernier message: 16/02/2007, 15h10
  5. Comment afficher une requete comportant 100.000 reponses
    Par thibal dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/08/2005, 09h17

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