Accueil > Forum > > > > Exécution ne finie pas...
Exécution ne finie pas...
mercredi 5 juillet 2006 à 12:01:41 |
Exécution ne finie pas...

woot6768
|
Salut à tous, Voilà, dans mon programme, je dois travaillé sur une table access qui comporte environ 16 000 entrées! Et lorsque je fais mes test de chaque fonction avec un 'limiteur' qui ne traite donc qu'une centaine de champs, l'éxécution ce passe bien. Mais lorsque je fais le traitement sur toute la table, l'éxécution ne termine pas même si l'on ne teste qu'une fonction! Par exemple, cette fonction est en éxécution depuis 30min! : publicvoid NettoyeTitre(){InitialiserCorrespondances(); string chaine;string lineCmd = "UPDATE M9004_CONTACTSYNC SET TITLE = '{0}' WHERE CONTACTSYNCID = {1}";string req = "SELECT TITLE ,CONTACTSYNCID FROM M9004_CONTACTSYNC";ADODB. Recordset Recordset = new ADODB.Recordset();Recordset.Open(req, chaineDeConnection2, ADODB. CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic, -1);Collection<string> exclusC = GetExclusCommunes;if (Recordset.RecordCount > 0){Recordset.MoveFirst(); while (!(Recordset.EOF)){chaine = "";ADODB. Field field = Recordset.Fields["TITLE"];if (field.Value != DBNull.Value){if (Convert.ToString(Recordset.Fields["TITLE"]).Length > 0){chaine = Recordset.Fields[ "TITLE"].Value.ToString();chaine = (CleanEspaces(chaine)).Trim(); chaine = Cleanup((Recordset.Fields[ "TITLE"].Value).ToString(), limite_autres);chaine = EpurerNom(chaine, exclusC); } } lineCmd = String.Format(lineCmd, chaine.Trim(), Recordset.Fields["CONTACTSYNCID"].Value);OdbcCommand cmd = newOdbcCommand(lineCmd, connection2);cmd.ExecuteNonQuery(); Recordset.MoveNext(); } } MessageBox.Show("Fonction NettoyeTitre() terminée.");Recordset.Close(); } Je voudrais donc savoir si le problème viens de mon code ou si c'est simplement la table qui est trop grande. Merci _________________________________________________________________________ Woot
|
|
mercredi 5 juillet 2006 à 12:13:36 |
Re : Exécution ne finie pas...

bernie666
|
Si ton pc est un 486Dx2 ... sa peut poser quelques soucy ... mais 16 000 entrées normalement il de devrai pas y avoir de probleme ... si le traitement de ta fonction est lourd => tu peux développer un process a coté qui te cleanra tes titres en asynchrone (ou au moins utiliser les threads) comme ca ton application ne seras pas bloquée
|
|
mercredi 5 juillet 2006 à 13:23:05 |
Re : Exécution ne finie pas...

gcorbineau
|
Juste un petit truc je n' ai pas vu dans ta boucle:
Recordset.MoveFirst();
while (!(Recordset.EOF)){
.....
}
Une fonction permettant d'avancer à l'enregistrement (Recordset.MoveNext ou Recordset.Next)
|
|
mercredi 5 juillet 2006 à 14:07:05 |
Re : Exécution ne finie pas...

woot6768
|
gcorbineau
-> Il y a un Recordset.MoveNext, c'est la dernière ligne de la fonction;) juste après l'éxécution de la commande odbc. bernie666 -> Je ne comprend pas trop ce que tu veu dire... Mais en faite, ce que je ne comprend pas c'est que lorsque j'effectue un debugg, ça fonctionne très bien! De même, lorsque l'on limite le nombre d'entrées à traiter. De plus, il y a autre chose que je ne comprend pas, lorsque je click sur mon bouton démarrer, je copie la base d'origine pour la mettre dans un autre répertoire, histoire de ne pas détruire ma base. Mais le faite est que dès que j'éxécute une fonction, la base est mal copier, exemple : 1ere exemple, lorsque la base est bien copier : privatevoid cmdDemarrer_Click(object sender, EventArgs e){ File.Copy("C:\\Documents and Settings\\Administrateur\\Mes documents\\Wouter Tjon Stage\\Contacts.mdb", "C:\\Documents and Settings\\Administrateur\\Mes documents\\Wouter Tjon Stage\\ProjetrecoupementContacts\\Contacts.mdb", true);//Affectation de la chaine de connection à la connection à la base :connection2.ConnectionString = chaineDeConnection2; // On mets le timeout au minimun (pour éviter d'attendre X secondes si erreur) :connection2.ConnectionTimeout = 1; try{ //Ouverture de la connection à la seconde base :connection2.Open(); } catch (OdbcException exception){ MessageBox.Show(exception.ToString());return;} MessageBox.Show("Normalement ça a copier la table...", "Table copier?");//NettoyeAdresse();} Et là, lorsque j'éxécute 'NettoyeAdresse(), il me vide ma table mais me laisse le nom des champs! : privatevoid cmdDemarrer_Click(object sender, EventArgs e){ File.Copy("C:\\Documents and Settings\\Administrateur\\Mes documents\\Wouter Tjon Stage\\Contacts.mdb", "C:\\Documents and Settings\\Administrateur\\Mes documents\\Wouter Tjon Stage\\ProjetrecoupementContacts\\Contacts.mdb", true);//Affectation de la chaine de connection à la connection à la seconde base :connection2.ConnectionString = chaineDeConnection2; // On mets le timeout au minimun (pour éviter d'attendre X secondes si erreur) :connection2.ConnectionTimeout = 1; try{ //Ouverture de la connection à la seconde base :connection2.Open(); } catch (OdbcException exception){ MessageBox.Show(exception.ToString());return;} MessageBox.Show("Normalement ça a copier la table...", "Table copier?");NettoyeAdresse();} Voilà tout mes problèmes... En éspérant les résoudres grâce à votre aide. _________________________________________________________________________ Woot
|
|
mercredi 5 juillet 2006 à 14:13:26 |
Re : Exécution ne finie pas...

bernie666
|
"Et là, lorsque j'éxécute 'NettoyeAdresse(), il me vide ma table mais me laisse le nom des champs! :" <= tu veux faire quoi exactement ? vider la table ET le nom des champs ? si oui => DROP TABLE ...
|
|
mercredi 5 juillet 2006 à 14:21:23 |
Re : Exécution ne finie pas...

woot6768
|
Non en faite je souhaite enlever des espaces, les accents, mettre en majuscule, supprimer les caractères spéciaux... En gros ôter tous ce qui est inutile mais garder une lisibilité de la table, donc faire une éspèce de 'compression'. Donc je souhaite garder tous mes champs, toutes mes colonnes mais justement, le problème est que quand j'éxécute une fonction pour nettoyer un champs, il me supprime toutes les entrées de la table! (ce que je ne souhaite donc pas!) En faite j'ai l'impression qu'il me copie mal la table, mais ce n'est pas le cas vu que quand je n'éxécute pas de fonction, il le fait très bien. Donc le problème doit ce situer dans une optimisation du code mais je ne sais pas ou, d'où mon topic! Si quelqu'un a une idée...
_________________________________________________________________________ Woot
|
|
mercredi 5 juillet 2006 à 14:25:12 |
Re : Exécution ne finie pas...

bernie666
|
Oui ton probleme de base comme tu me l'as dit est un probleme de temps d'execution de ta fonction ... => pour ne pas bloquer ton application => utilise des Threads
|
|
mercredi 5 juillet 2006 à 14:28:07 |
Re : Exécution ne finie pas...

woot6768
|
D'accord je vais voir ça, mais bon il faut d'abord que je me documente, je n'ai jamais utilisé les threads...
_________________________________________________________________________ Woot
|
|
mercredi 5 juillet 2006 à 15:55:06 |
Re : Exécution ne finie pas...
|
mercredi 5 juillet 2006 à 15:56:58 |
Re : Exécution ne finie pas...

woot6768
|
Pas de soucis ;)
_________________________________________________________________________ Woot
|
|
Cette discussion est classée dans : recordset, chaine, fields, title, adodb
Répondre à ce message
Sujets en rapport avec ce message
DataSet ou Recordset? [ par woot6768 ]
Salut à tous,Voilà, je me pose une quetion suite à un souci, lorsque je souhaite effectuer des modifications dans un ou plusieurs champs d'une table a
Erreur ! [ par woot6768 ]
Je vous présente mon code avec les erreurs générées par la compilateur que je n'arrive pas à déboger.publicvoid<font size=
Deux RecordSet dans une fonction. [ par woot6768 ]
Bonjour tous le monde,J'aurais simplement une question à poser.Est-il possible d'utiliser deux Recordset dans une même fonction?Je vous fournis un exe
Recordset ou DataReader? [ par woot6768 ]
Bonjour,Dans le cadre de mon projet, je dois modifier une base de données pour la compresser, est-il plus judicieux d'utiliser les recordset ou les da
Extraire une chaine d'un combobox [ par boninou ]
Bonjour à tous !J'ai une combobox dans laquelle ce trouve les noms et prénoms des utilisateurs.Les items sont donc comme ceci : "NOM Prénom".Or j'aime
[C#] [1.1] Extraction dans une chaine [ par SupaLou ]
Bonjour tout le monde.Est-il possible dans une chaine de caractères d'extraire un ensemble de caractère se situant entre deux caractères connus?? Humh
Limitation de longueur d'une chaine SQL [ par olivierbalagizi ]
Chers programmeurs, bonjour.J'aimerais savoir s'il ya une limitation au nombre de caractères que peut contenir une requête SQL parce que je dois ecrir
Chaine de connexion ? [ par EmacLi ]
Bonjour,J'ai une petite question !Lorsque l'on arrive dans un formulaire qui permet de paramétrer une connexion à une base de données, on trouve (dans
minuscules = majuscules [ par Jojo092 ]
Bonjour tout le monde,je sais que je suis envahissant, mais j'ai un autre petit souci et ayant une MSDN très restreinte, je n'ai pas trop le choix que
décomposition chaine [ par babe59 ]
Bonjour,Je reçois une chaine de caractères contenant un ensemble de champs de taille variable et sans séparateur (ch001ch02ch0003ch004...).J'aimerai e
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|