Avatar billede wise Seniormester
20. september 2005 - 13:53 Der er 4 kommentarer og
2 løsninger

GetDocumentByKey med flere parametre/dimensioner

Hej i kloge mennesker

Jeg er ved at lave en agent (faktisk en webservice) der skal checke om en record med en given id findes og opdate den (ellers oprette og opdatere).

Jeg har hele tiden fået det til at køre ved et view med id og navn, hvori jeg laver dette opslag.

'Check om dette firma tidligere er overført...
key = id
Set newdoc = checkview.getdocumentbykey(key, True)
If newdoc Is Nothing Then
'opretter document hvis det ikke er der i forvejen
  Set newdoc = New notesdocument(db)
  ...
End If           
'SELVE OPDATERINGEN som er ens om det er et nyt doc eller ej ....
...

------------

Jeg prøver nu at udvide den til både at medtage ID og SourceSystem (string)

keys( 1 ) = SourceSystem
keys( 2 ) = Id
       
Set newdoc = checkview.getdocumentbykey(keys, True)

If newdoc Is Nothing Then
...
-----------------

Denne ender altid med at oprette et nyt dokument - fremfor at finde det gamle. Jeg har lavet et view i denne forbindelse, der har system, id og navn som sorteret kolonner...

Er der nogle der har en ide om hvorfor den ikke finder de gamle dokumenter? Er der noget jeg har glemt.
Avatar billede cdelicht Nybegynder
21. september 2005 - 09:30 #1
Prøv at starte dit keys aray med indeks 0 (nul), altså:
keys(0)= blabla
keys(1) = tada
Avatar billede jogii Nybegynder
21. september 2005 - 09:49 #2
christian har ret. LS arrays starter altid ved 0, medmindre du ændrer det ved at angive
Option Base 1
i Options afsnittet.

Jeg vil dog fraråde dig at anvende denne teknik. Jeg vil personlig kun anvende den når jeg skal integrere med en eksisterende applikation hvor der allerede findes en oversigt som er sorteret på denne måde. Hvis du har fri råderet over applikationen, så vil jeg anbefale dig at anvende en "nøglet" kolonne, som sorterer dokumenter sådan:
    _s := "¤";
    SourceSystem +_s+ Id
eller
    Id +_s+ SourceSystem
alt efter hvad der vil gøre debugning nemmere.

Grunden til det er at denne oversigt vil kunne anvendes både fra LotusScript, Java OG @Formula. Det sidste er meget vigtigt for mig, specielt fordi @DbLookup anvender multiple nøgler på en HELT anden måde. Hvis du slår op med flere nøgler i @DBLookup får du en liste tilbage, som svarer til en konkateneret DbLookup med hver enkelt nøgle. Men generelt er det rart at kunne anvende de samme opslagsoversigter både til LS og @Formula. Og @DbLookup kan IKKE slå op med flere kolonner som nøgle.
Avatar billede wise Seniormester
21. september 2005 - 10:36 #3
Eksemplet er faktisk hentet fra hjælpen i R7, og de opretter variablen med denne dim
  Dim keys( 1 To 2 ) As String
Så er den vel oprettet korrekt?

Jeg vil nok kigge på Jogii's koncept med at samle det i en kolonne... Nu er jeg bare blevet lidt irreteret over at det andet ikke virker :-)
Avatar billede wise Seniormester
21. september 2005 - 10:55 #4
Bingo så kører det via den ene kolonne... (Skulle lige lave en trim$() også), da mit id gik fra tallet 100 til teksten ' 100' og dermed ikke var ens...
Tak for hjælpen, jeg giver flest points til Jogii da det var den del der hjalp mig videre...
Avatar billede jogii Nybegynder
21. september 2005 - 11:13 #5
Det kan jo også have været @Trim der manglede for at få array-getdoc til at virke ... men tak alligevel
Avatar billede wise Seniormester
21. september 2005 - 12:29 #6
jeg overvejede det, men det var på Id'en og det var den der virkede fint med en dimension. Jeg tror faktisk også den lavede opslaget som nummer fremfor tekst på det tidspunkt..
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester