Retour au début du code SI erreur

meryem - 5 août 2013 à 12:05
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 - 5 août 2013 à 23:48
Bonjour,
j'ai un bloc d'instructions avec un TRY CATCH , et une exception WebException .
je cherche comment faire pour que si l'opération échoue , on fait un retour au début du code pour refaire l'opération à nouveau(tout cela dans le code c#) c'est COMME UN ROLLBACK dans SQLSERVER.
excusez ma façon de décrire ^^".
MERCI

15 réponses

aucune réponse!!! :'(
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
5 août 2013 à 13:12
Hello,
aucune réponse!!! :'(

-> Tu es bien impatient... ;)

Pourquoi ne pas mettre une boucle while?
0
comment le faire avec une instruction dans un TRY CATCH!!
0
 try
			{
				ServiceReferenceEnvoiCommande.Service1 service = new ServiceReferenceEnvoiCommande.Service1();
			
				
				//service.Open();
           
				ServiceReferenceEnvoiCommande.Commande commandeAenvoyer = new ServiceReferenceEnvoiCommande.Commande();
				
				transmettreProgressBar.Value=40;
				
				
				ServiceReferenceEnvoiCommande.Commande commandeReponse = new ServiceReferenceEnvoiCommande.Commande();
				//Recuperer la date de la commande 
				commandeAenvoyer.DateCommande = DateTime.Now;
				
				commandeAenvoyer.nbr_Lignes_Commande =int.Parse(dr[0]["nbr_lignes_entete_commande"].ToString());
				commandeAenvoyer.nbr_Produits_Commande = iNbreProduit;
				commandeAenvoyer.codeCommande = dr[0]["id_commande"].ToString();
				
				//recuperer le pharmacien 
				commandeAenvoyer.pharmacien = new ServiceReferenceEnvoiCommande.Pharmacien();
				commandeAenvoyer.pharmacien.CodePharmacien = sCodePharmacie;
				commandeAenvoyer.pharmacien.NomPharmacien = sNomPharmacie;
						
				

				commandeAenvoyer.MedCommandee = new ServiceReferenceEnvoiCommande.Medicament[dr.Length];
				transmettreProgressBar.Value=55;
				for (int i=0;i<dr.Length;i++)
				{
			
					string codeBare = dr[i]["code_bare"].ToString();
					if (codeBare == String.Empty  || codeBare == null)
						codeBare = "00000";
					long quantitn = Convert.ToInt64(dr[i]["qte_detail_commande"].ToString());
					int Quantite = (int)quantitn;
					if(Quantite>0) // quand la quantité commandée=0, on ne l'envoie pas
					{

						commandeAenvoyer.MedCommandee[i] = new ServiceReferenceEnvoiCommande.Medicament();
						commandeAenvoyer.MedCommandee[i].ID = dr[i]["ID_ARTICLE"].ToString();;					
						commandeAenvoyer.MedCommandee[i].CodeBarre = codeBare;					
						commandeAenvoyer.MedCommandee[i].Designation =dr[i]["designation_article"].ToString();
						commandeAenvoyer.MedCommandee[i].Quantite = Quantite;
						commandeAenvoyer.MedCommandee[i].PrixVente = float.Parse(dr[i]["prix_vente_detail_commande"].ToString());
					}
				}

				reponseCommande = service.EnvoyerCommande(commandeAenvoyer);//numero de commande
				
				transmettreProgressBar.Value=80;
				if (int.Parse(reponseCommande) != 0) 
				{
					Labelreponse.Text = "Votre commande a été enregistrée sous le N° " + reponseCommande;
					string numeroApprovisionnement=string.Empty;
					if(DScom!=null)
					{
						if(DScom.Tables[0].Rows.Count>0)
						{
							if(DScom.Tables[0].Rows.Count==1)
							{
								if(DScom.Tables[0].Rows[0]["id_commande"]!=null)
								{
									numeroApprovisionnement=DScom.Tables[0].Rows[0]["id_commande"].ToString();
								}
							}
						
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
Modifié par BunoCS le 5/08/2013 à 13:24
Je verrais un truc comme ça:
bool error = false;
do {
  try
  {
    error = taFonction();
    // ou bien tout ton code
  }
  catch(Exception e)
  {
    // gestion erreur
    error = true;
  }
} while (error);


@+
Buno, Modo CS-CCM
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
à quoi sert taFonction(); dans TRY
est ce que c'est obligatoire?
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
5 août 2013 à 13:43
j'ai mis taFonction() pour ne pas réécrire tout ton code ;)
Après, tu fais ce que tu veux.
0
aah d'accord merci je vais tester :)
0
quand j'exécute, le message d'erreur que j' ai écris dans le CATCH s'affiche et quand je clique Fermer , la boite de dialogue reste coincée et ne se ferme plus jusqu'à ce que j'arrête l'application.
si j 'ai bien compris le programme rencontre l'erreur à chaque fois ,et avec la boucle le message ne s'arrête plus de s'afficher , plutôt il ne se ferme pas comme j 'ai dit ...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
5 août 2013 à 14:00
Ah bah je ne savais pas que tu affichais une popup...
A toi d'arranger le code en fonction du résultat de la popup...
0
non c'est qu'un messageBox.show ^^"
je travaille avec WinForm C#
0
il est dans le catch :
catch(WebException Wex)
				{
					//				//prevoir la suppression des produits insérés
					//     			MessageBox.Show(Wex.Message);
					MessageBox.Show("Une erreur s'est produite lors de la transmission. Merci de réessayer.");
					StreamWriter txt1 = File.AppendText("c:\\Log\\Journal_Erreur.txt");
					txt1.WriteLine("\nError  :"+DateTime.Now.ToString()+"      :"+Wex.Message);
					txt1.Flush();
					txt1.Close();
					BtnTransmission.Enabled = true;
					transmettreProgressBar.Visible=false;
					error= true;
				}
0
??? :/
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
5 août 2013 à 21:48
Bonsoir,

comme Buno te la déjà dit ton impatience n'incite pas à te répondre.

Si l'erreur se reproduit indéfiniment, c'est que ton code bugue.

Execute le en pas à pas pour voir à quelle ligne ça se produit.

A ce moment vérifie tous les paramètres.

Et reviens si tu ne trouves pas la solution.
0
et bin premièrement rien à voir avec ma patience parce que c'est un travail que j dois rendre au plus vite ^^
et deuxièmement l'Exception se produise lorsqu'il n y a pas de connexion entre le WebService et l'application qu'utilise le client , et dans ce cas là le programme retourne au début de l'opération ...
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 656
5 août 2013 à 23:48
premièrement rien à voir avec ma patience parce que c'est un travail que j dois rendre au plus vite

Oui mais l'urgence n'est que pour toi, et faire deux "up" par jour ne poussera pas plus les bénévoles que nous sommes à te répondre.

Qu'il n'y ait pas de connexion, c'est l'erreur qui devrait arriver de temps en temps, le programme retourne au début pour retester OK. Il faudrait peut être, mettre un petit délai.

Mais si ça tourne en boucle, il doit y avoir autre chose qu'un soucis de réseau.
0
Rejoignez-nous