context : dans un modèle de document j'ai un champs date multivalué 'couplé' avec d'autre champs multivalués. ils forment un tableau 'd'historique d'étape'
Dans un scripte, je crée un nouveau tableau 'historique' (donc d'autre champs de même type que les 1er) mais juste avec les étapes importantes. se dernier fonctionne correctement quand le 1er tableau n'a pas plus de 2 valeurs.
si il à plus, j'obtien le message d'erreur : "NSD is running" et toutes mes applis lotus se ferment (même mon debugeur).
mon scripte 'simplifié':
(j'ai virer la sélection des étapes à copier)
- Code : Tout sélectionner
Sub Click(Source As Button)
Set Session = New NotesSession
Dim db As New NotesDatabase( "", "" )
Dim doc As NotesDocument
Dim item As NotesItem
Dim i As Integer
Dim his(4) As String
his(0) ="date"
his(1) ="etape"
his(2) ="comm"
his(3) ="inter"
his(4) ="etat"
' ouverture de la base en prod
Call db.Open( "xxx", "yyy.nsf" )
Set COLL1 = DB.search({form = "Dossier"},Nothing,0)
If COLL1.count = 0 Then
Msgbox "Erreur collection"
Exit Sub
Else
Msgbox "nb dossier traité : " & Cstr(COLL1.Count)
End If
Set doc = COLL1.GetFirstDocument
Do Until doc Is Nothing 'boucle des documents
'Création du tableau d'historique B
Forall Y In his
If doc.HasItem("his_" & Y & "_B") Then
Call doc.RemoveItem("his_" & Y & "_B")
End If
Set item = doc.GetFirstItem("his_" & Y)
Call doc.CopyItem(item,"his_" & Y & "_B")
End Forall
' intégration de la 1er ligne de l'historique B :
doc.his_date_B = doc.his_date(0)
doc.his_etape_B = "Arrivé dossier"
doc.his_comm_B = doc.his_comm(0)
doc.his_inter_B = doc.his_inter(0)
doc.his_etat_B = doc.his_etat(0)
'Récupération de l'historique B :
For i = 1 To Ubound(doc.his_etape)
If doc.his_etape(i) = "x" Or ... Then
doc.his_etape_B = Arrayappend(doc.his_etape_B,doc.his_etape(i))
doc.his_comm_BPI = Arrayappend(doc.his_comm_B,doc.his_comm(i))
doc.his_inter_B = Arrayappend(doc.his_inter_B,doc.his_inter(i))
doc.his_etat_B = Arrayappend(doc.his_etat_B,doc.his_etat(i))
doc.his_date_B = Arrayappend(doc.his_date_B,doc.his_date(i))
End If
Next
Call doc.Save(True, False, False)
'Call doc.Remove(True)
Set doc = COLL1.GetNextDocument(doc)
Loop
Exit Sub
Msgbox "fin de traitement"
End Sub
il plante à la ligne : doc.his_date_B = Arrayappend(doc.his_date_B,doc.his_date(i))
Si vous avez une idée sur ce problème...
Merci d'avance