Page 1 sur 1

Objet metier L'instruction a été arrêtée

MessagePosté: Mar 11 Mar 2014 18:57
de viking82
Bonjour,

En C# j'ai : "L'instruction a été arrêtée." lorsque je veux écrire dans la table des ressources
vous avez ci-dessous le code utilisé les données on été préalable mémorisées dans un DataTable
Version sage i7.70 sql serveur 2008r2 Windows 7 32 bits le programme est compilé en 32 bits
Code: Tout sélectionner

private BSCIALApplication3 baseGescom = new BSCIALApplication3();

baseGescom.Name = Program.maconfig.FicGCM;
            baseGescom.Loggable.UserName = Program.maconfig.Utilisateur;
            baseGescom.Loggable.UserPwd = Program.maconfig.Motdepass;
            try
            {
                baseGescom.Open();
            }
            catch (Exception ex)
            {

                MessageBox.Show("Ouverture base gescom " + ex.ToString());
                throw new Exception(ex.ToString());
            }
            IBORessource ressource = null;
            // Ecriture ressource
            foreach (DataRow ligneExcel in TableExcel.Rows)
            {
                ressource = (IBORessource)baseGescom.FactoryRessource.Create();
                ressource.SetDefault();
           
                ressource.RP_Code = ligneExcel["colb"].ToString().Trim();               
                ressource.RP_Intitule = ligneExcel["colc"].ToString();
               
                string typress = ligneExcel["colp"].ToString().Trim();
                switch (typress)
                {
                    case "PERSONNEL":
                        ressource.RP_Type = Objets100Lib.RessourceProdType.RessourceProdTypeHomme;
                        break;
                    case "MACHINE":
                        ressource.RP_Type = Objets100Lib.RessourceProdType.RessourceProdTypeMachine;
                        break;

                    default:
                        ressource.RP_Type = Objets100Lib.RessourceProdType.RessourceProdTypeOutil;
                        break;
                }
                             
                ressource.RP_Complement = (ligneExcel["cole"].ToString() == "0" ? "" : string.Concat("", ligneExcel["cole"].ToString()));
                ressource.Adresse.Adresse = (ligneExcel["colf"].ToString().Trim() == "0" ? "" : string.Concat("", ligneExcel["colf"].ToString().Trim()));
                ressource.Adresse.Complement = (ligneExcel["colg"].ToString().Trim() == "0" ? "" : string.Concat("", ligneExcel["colg"].ToString().Trim()));
                ressource.Adresse.CodePostal = (ligneExcel["colh"].ToString().Trim() == "0" ? "" : string.Concat("", ligneExcel["colh"].ToString().Trim()));
                ressource.Adresse.Ville = (ligneExcel["coli"].ToString().Trim() == "0" ? "" : string.Concat("", ligneExcel["coli"].ToString().Trim()));
                ressource.Adresse.Pays = (ligneExcel["colj"].ToString().Trim() == "0" ? "" : string.Concat("", ligneExcel["colj"].ToString().Trim()));
                ressource.Telecom.Telephone = (ligneExcel["colk"].ToString().Trim() == "0" ? "" : string.Concat("", ligneExcel["colk"].ToString().Trim()));
                ressource.Telecom.Telecopie = (ligneExcel["coll"].ToString().Trim() == "0" ? "" : string.Concat("", ligneExcel["coll"].ToString().Trim()));
                ressource.Telecom.Portable = (ligneExcel["colm"].ToString().Trim() == "0" ? "" : string.Concat("", ligneExcel["colm"].ToString().Trim()));
                ressource.Telecom.EMail = (ligneExcel["colu"].ToString().Trim()== "0" ? "" : string.Concat("",ligneExcel["colu"].ToString().Trim()));
                ressource.RP_Capacite = 0;
                try
                {                 
                        ressource.Write();                  //<----- se met en erreur!
                }
                catch (Exception ex)
                {
                    MessageBox.Show("enregistrement ressourceprod\n" + ex.ToString());
                    throw new Exception(ex.ToString());
                }


Question, ou est l'erreur?

Merci :?

Re: Objet metier L'instruction a été arrêtée

MessagePosté: Mer 19 Mar 2014 23:47
de asr31
Bonjour,


C'est à quel niveau, le Pb ? dans l'ouverture ou sur le write ?

Une idée, comme ça : Il y a bien un password pour ce compte de connexion ?, car si non, il faut soit ne pas préciser la valeur baseGescom.Loggable.UserPwd, soit lui passer la valeur null.

Et puis, ton try catch devrait te donner un peu plus d'information sur la nature de l'erreur, non?
Pour ma part, je rajouterai une p'tite gestion d'erreur sur la gestion de ton "typress"

Cordialement,

Re: Objet metier L'instruction a été arrêtée

MessagePosté: Lun 23 Fév 2015 12:46
de julien00001
Bonjour,

Je rencontre exactement le même problème et j'avoue sécher un peu, je suis dans la même config, même langage et même cas que le premier post.
J'arrive à faire ce que je veux avec les articles où les fournisseurs par exemple.
Cependant je remarque que la table F_RESSOURCEPROD est en lecture seule contrairement à ces dernières et pourtant, dans la gescom un simple structure > nouvelle ressource me permet d'en créer facilement.
Je pense avoir tenu compte des champs obligatoire, j'ai du moins renseigné tous les champs qui l'étaient dans le formulaire de création de la gescom.
Malheureusement, tous mes essais se concluent par un "L'instruction a été arrêtée.".

Voici un extrait de mon code pour l'insert. A noter que l'update et le delete fonctionnent correctement.

Cordialement, Julien.

EDIT : L'erreur est sur le writeDefault();

Code: Tout sélectionner
            var titi = gs.BaseCial.FactoryRessource.Create();
            var ress = (IBORessource)titi;
            ress.SetDefault();
            ress.RP_Code = "JUL01";
            ress.RP_Intitule = "poc Julien";
            ress.RP_Type = (RessourceProdType)2;
            ress.Depot = gs.BaseCial.FactoryDepot.ReadIntitule("Bijou SA");
            ress.ArticleDefault = gs.BaseCial.FactoryArticle.ReadReference("JUL01");
            ress.RP_Capacite = 1;
            ress.Unite = gs.BaseCial.FactoryUnite.ReadIntitule("Pièce");
            ress.RP_Sommeil = false;
            ress.WriteDefault();