22. juli 2004 - 09:09Der er
13 kommentarer og 1 løsning
Brugen af array
Jeg forsøger at lære/bruge arrays, men det volder lidt kvaler!
Jeg vil gerne tilføje en værdi til et felt (liste - og af forskellig type på felterne!!!), og har fået et praj om at ReplaceItemValue er vejen frem. Jeg forsøger med nedenstående, men kan ikke få sat array til den værdi feltet har inden jeg begynder:
Dim array() As String array() = Doc.SalaryNo ****** fejler u = (Ubound(array)) + 1 Redim Preserve array(u) array(u) = "test" array(u+1) = "test2"
Dim item As NotesItem Set item = doc.GetFirstItem("SalaryNo") Call Doc.ReplaceItemValue("SalaryNo, array")
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Du er nødt til at fortælle den, hvor mange elementer array skal indeholde, førend du putter noget i.
Hvis vi antager at du vil tage det der står i doc.salaryNo og tillægge to værdier yderligere, så kan det gøres således:
Dim array() as string Dim u as integer 'erklær doc og tildel u=ubound(doc.salaryNo)+2 redim array(u) 'ingen preserve da variablen stadig er tom array = doc.salaryNo array(u-1) = "test" array(y) = "test2" doc.salaryNo = array
(jeg har ikke haft ovenstående forbi en Notes-designer, så der kan godt være en bøv i...)
Jeg synes ikke der er nogen grund til at rode med NotesItem og ReplaceItemValue i dette eksempel. Specielt ikke når det du ønsker at lære er at arbejde med arrays.
Når man erklærer et array, kan det nogen gange være bedst at erklære det uden at angive type (f.eks. "Dim array"). Prøv sådan her: Dim array Dim u As Integer 'erklær doc og tildel u=Ubound(doc.salaryNo)+2 array = doc.salaryNo Redim Preserve array(u) array(u -1) = "test" array(u) = "test2" doc.salaryNo = array
En anden ting er at smide det over i en variant til mellembehandling. Varianter er ligeglade med formatet. F.eks.: Dim array0 as Variant array0 = Doc.SalaryNo Dim u as integer u=ubound(array0)+ 1
Hvis jeg skriver: Dim array0 as Variant virker array0 = Doc.SalaryNo ikke. Men hvis jeg skriver Dim Array virker det godt, men så virker array(u-1) = "test" og array(u) = "test2" ikke!!!!!
Dette eksempel virker i sin helhed, hvis du laver det som en agent: Sub Initialize Dim session As New NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Set db = session.CurrentDatabase Set doc = New NotesDocument ( db ) doc.salaryNo = "test0" Dim array Dim u As Integer 'erklær doc og tildel u=Ubound(doc.salaryNo)+2 array = doc.salaryNo Redim Preserve array(u) array(u -1) = "test" array(u) = "test2" doc.salaryNo = array End Sub
Jeg har løst det med følgende: Dim V As Variant Dim U As Integer V = Doc.GetItemValue(FieldName) If V(0) = "" Then U = 1 Else U = Ubound(V) + 1 End If Redim Preserve V(U) V(U) = FieldValue Call Doc.ReplaceItemValue(FieldName, V)
Vedr. Redim, så er det min erfaring at det ikke virker hvis man først dimmer og derefter redimmer. Man skal så at sige fortælle den at man agter at gøre det senere.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.