Arrayappend + champs multivalué numérique

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Arrayappend + champs multivalué numérique

Messagepar Gillou13 » 26 Nov 2009 à 17:28

Bonjour,

J'essaie d'ajouter une valeur à un champs numérique :

doc.his_etat = Arrayappend(doc.his_etat,3)

j'ai le message : ne peu mixer les types d'informations...

pourtant le champs en question est bien en numérique et j'utilise la même méthode pour un champs text sans problème :
doc.his_etape = Arrayappend(doc.his_etape,"Accordé")

Quelqu'un à une idée?

Merci d'avance.
Dernière édition par Gillou13 le 01 Déc 2009 à 09:34, édité 1 fois.
Gillou13
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 368
Inscrit(e) le : 15 Avr 2005 à 09:49
Localisation : lyon

Messagepar Jérome Deniau » 26 Nov 2009 à 23:30

Regarder l'aide, utiliser un tableau intermédiaire!

dim his_etat() as double
dim tmptab() as double


his_etat = doc.his_etat
call tmptab = arrayappend(his_etat,3)
doc.replaceitemvalue("his_etat",tmptab)
enfin en gros......

puisqu'on ne peut pas faire redim doc.his_etat(ubound(doc.his_etat) +1)^par exemple.
Jérome Deniau
 

Messagepar Gillou13 » 27 Nov 2009 à 10:21

Oki je vais faire ca.

Par contre un truc que je n'ai pas compris, Dans un scripte similaire j'ai :
doc.his_etat = arrayappend(doc.his_etat,doc.etat)

et doc.etat est un champ numérique non multivalué. Je ne saisi pas bien la différence entre les 2 lignes... (même après avoir lu l'aide de lotus sur arrayappend)
Gillou13
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 368
Inscrit(e) le : 15 Avr 2005 à 09:49
Localisation : lyon

Messagepar Michael DELIQUE » 27 Nov 2009 à 10:47

salut

parceque pour notes un champ est un array ! si une seule valeur on a un array avec une seule occurence c'est pour ça que quand tu lit un champ ton doc.champ prend un (0) a la fin c'est l'indice du array si tu met pas de (0) tu récupéres tout le array

dans le cas d'un umérique je dirais que notes a du mal
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Gillou13 » 27 Nov 2009 à 12:09

Oki merci à tous.

donc, si mes neuronnes sont bien en place, il ne me fait pas d'erreur avec la ligne suivante :

doc.his_etape = ArrayAppend(doc.his_etape,"Accordé")


car "Accordé et un 'array' de caractères... :scratch:

Notes et ces mystères :wink:
Gillou13
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 368
Inscrit(e) le : 15 Avr 2005 à 09:49
Localisation : lyon

Messagepar Jérome Deniau » 27 Nov 2009 à 13:05

Pas un mystère, c'est dans le cours LotusScript depuis la V4 (cours officiel) il peut convertir sans problème un 1 en "1" et un "1" en 1 comme les champs dans doc.nomchamp ne sont pas typés, le type est appliqué après intégration (je raccourci) d'où l'intérêt de bien utiliser doc.replaceItemValue, cstr(), cdbl() si on ne veut pas tomber dans des erreurs et des effets de bords, en prenant odbc par exemple si on fait un doc.libelle =valeur, mais que valeur est de type double ou entier, on peut avoir des surprises dans une vue car valeur peut être convertit en variant, et empêcher Lotus de définir le type IsSummary (affichable dans une vue), etc.... donc pleins d'emmerdes.....
Jérome Deniau
 

Messagepar Michael DELIQUE » 27 Nov 2009 à 13:28

tiens un point en plus pour le replaceitemvalue/getitemvalue
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy


Retour vers Développement

cron