[C#] Info libre : cast d'une valeur de type montant

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

[C#] Info libre : cast d'une valeur de type montant

de Steph_Textiss » Mar 2 Avr 2013 10:58

Bonjour,

Pour le développement d'un programme pour créer des fiches articles via les objets métiers, j'ai un souci avec l'insertion d'une valeur pour une info libre de type montant.

J'ai tenté de caster ma valeur via ces tests :
Code: Tout sélectionner
Convert.ToDouble(ChampLibre.value);
Convert.ToDecimal(ChampLibre.value);
Convert.ToInt32(ChampLibre.value);


A chaque fois je me mange une erreur System.Runtime.InteropServices.COMException (0xFFFFFFFF): Type incorrect !

Sauriez vous comment bien caster cette valeur ?

[edit] je tente aussi d'enregistrer un champ libre de type date avec un objet C# de type DateTime et je me mange un "Marqueur Illégale !", existe t'il un moyen de caster dans des formats définis dans l'enum FieldType ?
[résolu] pour la date... mon cerveau n'était pas en état de fonctionner correctement.

A vous lire :)
Posteur habitué
Posteur habitué
 
Messages: 22
Inscription: Mer 4 Aoû 2010 11:37

Re: [C#] Info libre : cast d'une valeur de type montant

de asr31 » Jeu 25 Avr 2013 23:18

Bonjour,

Est-tu sûr que c'est un problème de cast ?
Faire attention à rendre l'enregistrement maitre (le F_Article) de l'info libre persistant (Write()) avant d'accéder à ses infos. libres.
Une info. libre type texte passe sans erreur ?

Cordialement,
ASR31

En recherche de missions.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 2975
Inscription: Mer 13 Fév 2008 15:31
Localisation: TOULOUSE

Re: [C#] Info libre : cast d'une valeur de type montant

de Steph_Textiss » Ven 17 Mai 2013 11:11

Bonjour asr31 !

Oui, je suis quasi sûr que le pb vient du cast.

En même temps que je tente d'insérer cette donnée, j'insère d'autres infos libres dont un en INT (via Convert.ToInt32(ChampLibre.value); ), un en enum et plusieurs en text.

Voici la boucle dans laquelle j'insère les valeurs où :
- NewProdSage est mon article obj métier courant
- Produit.ChampsLibres est une collection de data (contenant .value et .field)

Code: Tout sélectionner
foreach (baseProd_ChampLibre ChampLibre in Produit.ChampsLibres)
{
    if (ChampLibre.value != null && ChampLibre.value != "")
    {
        try
        {
            if (ChampLibre.field == "COLISAGE") // Type entier
            {
                NewProdSage.InfoLibre[ChampLibre.field] = Convert.ToInt32(ChampLibre.value);
            }
            else if (ChampLibre.field == "PV_final_en_magasin") // Type montant
            {
                // NewProdSage.InfoLibre[ChampLibre.field] = ChampLibre.value;
                // rien du tout, on va update en sql...
            }
            else
            {
                NewProdSage.InfoLibre[ChampLibre.field] = ChampLibre.value;
            }
        }
        catch (Exception e)
        {
            Logs.Write(ChampLibre.field + " (" + ChampLibre.value+") : " + e.ToString());
        }
    }
}
Posteur habitué
Posteur habitué
 
Messages: 22
Inscription: Mer 4 Aoû 2010 11:37


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité