Avatar billede jdue Nybegynder
08. maj 2002 - 16:29 Der er 6 kommentarer og
2 løsninger

Refreshe felterne på et dokument back-end

Hvordan refresher man felterne på et dokument backend?

Jeg har nogle dokumenter med computede felter, som afhænger af andre felter i dokumentet. Disse andre felter ændres backend og dokumentet saves - men de computede felter opdateres ikke inden der gemmes.

Hvordan gør jeg det, uden at kode de computede felters betingelser direkte ind i save-funktionen?
Avatar billede cdelicht Nybegynder
09. maj 2002 - 20:59 #1
Man kan kun lave en Refresh (recalc) frontend, dvs. dit dokument skal være åbent. Kun derved kan Notes "se" de øvrige felter på formen, og dermed hvordan de skal beregnes.
Script:
  Call uidoc.Refresh

Formula:
  @Command([RefreshHideFormulas])
Avatar billede yeager Nybegynder
10. maj 2002 - 10:21 #2
Kunne de computede felter ikke være af ComputeForDisplay typen, så har du de nyeste parametre med når dokumentet åbnes i UI.

Er formen sat til automatically refresh fields? Du siger at værdierne ændres back-end og saves, så må dokumentet jo være aktivt (godt nok ikke i UI)og en recalculation mulig.... eller not...

Endelig kunne jeg tænke mig at en agent (scheduled) ville kunne gøre jobbet med at opdatere.

MvH
Avatar billede jdue Nybegynder
10. maj 2002 - 10:35 #3
1)Løsningen med at bruge Computed For Display ville sikre at dokumentet opdateres når en bruger åbner dokumentet, men så vidt jeg ved er der et andet problem med den løsning: Feltet der beregnes er et Authors-felt, og det skal gemmes med dokumentet aht. sikkerheden - og det sker vist ikke med CompForDisplay (Kan nogen be- eller afkræfte dette?)

2) Automatically refresh fields er slået til, men den kræver tilsyneladende også front-end access for at virke.

3) Løsningen med en scheduled agent har jeg også overvejet, men jeg kan ikke huske om en serverside agent kan accesse dokumenter front-end (det tror jeg ikke). Og ingen front-end access, ingen refresh.

Andre forslag?
Avatar billede yeager Nybegynder
10. maj 2002 - 10:49 #4
1) Du kan jo godt have et computedForDisplay felt hvis værdi så gemmes i et andet felt, hvis de to felter ikke er ens.
2)ok
3) Du kan godt sætte en agent til at blive kørt fra serveren. Se dette: (fra Notes help)

An agent is a user procedure that you can trigger through a number of mechanisms. An agent runs on:
The user's workstation if the agent's trigger is: Manually or If Documents Have Been Pasted.
The server or workstation containing the agent if the agent's trigger is: Before New Mail Arrives, After New Mail Arrives, If Documents Have Been Created or Modified, or On Schedule.
You can code agents in the formula language, LotusScript, and Java, and you can use Domino-supplied agents. Before writing your own agent, see if a Domino-supplied agent will do the job.
Formula-based agents run iteratively on the documents in the database. You can apply search criteria through the agent interface to specify which documents in the database are to be processed. A  SELECT statement in the formula further limits the search. If you do not include a SELECT statement in the formula, Domino Designer appends a "SELECT @All" statement. Except for "SELECT @All," a SELECT statement must be the first statement in the formula to be effective.
LotusScript and Java agents run once. You supply the search criteria and the iteration through the language constructs. Search criteria applied through the agent interface are effective only through UnprocessedDocuments in NotesDatabase (LotusScript) or getUnprocessedDocuments in AgentContext (Java).


Jeg må tilstå at jeg har lidt svært ved at relatere til problematikken 8-(
Er det til access control eller historisk hvem-var-her-hvornår etc.

Håber du finder en løsning.... 8)
Avatar billede jdue Nybegynder
10. maj 2002 - 10:59 #5
Hej Yeager

mht pkt. 3) så fik jeg vist udtrykt mig lidt uklart: Spørgsmålet var ikke om agenten kan køre serverside, spørgsmålet er om den kan accesse dokumenter via *front-end* (UI-klasserne i LotusScript) NÅR den kører serverside.

Ideen i 1) med et CompForDisplay til at udføre refreshen, og et andet felt til at gemme værdien er god. Den eneste begrænsning i den er, at man skal leve med en "forkert" værdi i det beregnede felt indtil en bruger åbner dokumentet (og i den mellemliggende tid ville det f.eks. være muligt for en bruger der ikke burde have skriverettigheder til dokumentet at slette det fra et view - det er problematikken i en nøddeskal.)
Avatar billede cdelicht Nybegynder
10. maj 2002 - 11:07 #6
Svar til pkt 3: nej. RunOnServer er ren back-end!
Ad 1) Du kan da bare fjerne slette muligheden fra viewet. Du skriver bare Continue=False i Querydocumentdelete under database scriptet.
Avatar billede cdelicht Nybegynder
10. maj 2002 - 11:10 #7
Har en bedre ide:
Flyt alle dine beregninge af felter ud i et seperat script. det kalder du fra QueryClose når dokumentet lukker og fra din funktion der opdaterer back end. Du skal godt nok kode beregningerne en gang men til gengæld kan du kalde beregningerne alle steder fra.
Avatar billede jdue Nybegynder
10. maj 2002 - 11:19 #8
Ja, jeg tror jeg vil krybe til korset og kode beregningerne i et script.
Det virkede bare som overkill, når nu det beregnede felt er opfundet ;-(

Tak for frugtbar diskussion!
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