begin process at 2012 02 08 21:54:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Exécution

 > 

Exécution ne finie pas...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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...

gcorbineau

Membre Club
Désoler je n'avait pas vue. :-(
mercredi 5 juillet 2006 à 15:56:58 | Re : Exécution ne finie pas...

woot6768

Pas de soucis ;)


_________________________________________________________________________
Woot

1 2 3

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,309 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales