LOTUS SCRIPT: Manipulácia s dokumentmi / 3. časť

logo dat k nadpisu.jpg V pred­chád­za­jú­cej čas­ti se­riá­lu sme si ob­jas­ni­li zá­klad­né konštruk­čné pr­vky LS a zá­ro­veň prís­tup k zá­klad­ným ob­jek­tom Do­mi­no. Te­raz bu­de­me po­kra­čo­vať mi­mo­riad­ne prak­tic­kou čas­ťou – ma­ni­pu­lá­ciou s do­ku­men­tmi da­ta­bá­zy No­tes po­mo­cou back-end i front-end tried.

PRAX: NO­TES­DO­CU­MEN­TCOLLEC­TION
Tá­to trie­da pred­sta­vu­je mno­ži­nu (ko­lek­ciu) do­ku­men­tov v da­ta­bá­ze. Od­vád­za sa z back-end trie­dy No­tes­Da­ta­ba­se pri­ra­de­ním k vlas­tnos­ti Un­pro­ces­sed­Do­cu­ments. Nas­le­du­jú­ci kód zob­ra­zí po­čet ozna­če­ných do­ku­men­tov:

1. V DD ot­vor­te po­hľad Po­dľa dá­tu­mu a vy­tvor­te tla­čid­lo Po­čet ozna­če­ných do­ku­men­tov (Crea­te – Ac­tion – Ac­tion...).

2. Ako typ kó­du zvoľ­te LS a do pro­ce­dú­ry Sub Click(Sour­ce As But­ton) vlož­te:

Dim ses­sion As New No­tes­Ses­sion
Dim db As No­tes­Da­ta­ba­se
Set db=ses­sion.Curren­tDa­ta­ba­se

Dim coll As No­tes­Do­cu­men­tCollec­tion
Set coll=db.Un­pro­ces­sed­Do­cu­ments
Mes­sa­ge­box "Po­čet ozna­če­ných do­ku­men­tov: "+ Cstr(coll.Count)

LotusScript Obr1.jpg
Obr.č.1


3. Ulož­te po­hľad a over­te fun­kčnosť tla­čid­la tak, že bu­de­te ozna­čo­vať roz­lič­ný po­čet do­ku­men­tov a kli­kať na vy­tvo­re­né tla­čid­lo.

Pr­vé tri riad­ky sú zná­me z pred­chád­za­jú­cej čas­ti, ďal­šie ana­lo­gic­ky pred­sta­vu­jú expli­cit­nú dek­la­rá­ciu trie­dy No­tes­Do­cu­men­tCollec­tion, vy­tvo­re­nie jej in­štan­cie z ak­tuál­nej da­ta­bá­zy a na­ko­niec vý­pis jej vlas­tnos­ti na ob­ra­zov­ku.

TRIE­DA NO­TES­DO­CU­MENT
Tá­to trie­da pred­sta­vu­je back-end pre­zen­tá­ciu do­ku­men­tu (zá­zna­mu) v da­ta­bá­ze No­tes. Naj­čas­tej­šie sa ten­to ob­jekt sprís­tup­ňu­je dvo­ma spô­sob­mi:

Ak je do­ku­ment ozna­če­ný v po­hľa­de Ak je do­ku­ment pria­mo ot­vo­re­ný
...
Set coll=db.Un­pro­ces­sed­Do­cu­ments
Set doc=coll.Get­Fir­stDo­cu­ment
....
...
Set uiDoc=uiwor­kspa­ce.Curren­tDo­cu­ment
Set doc=uiDoc.Do­cu­ment
....


V ta­buľ­ke je in­štan­cia ozna­če­ná ako doc, in­štan­ciu front-end trie­dy uiwor­kspa­ce opí­še­me nes­kôr. 

LotusScript obr2.jpg
Obr.č.2


PRAX: NO­TES­DO­CU­MENT
Po­uži­tie tej­to trie­dy uká­že­me na prík­la­de tla­čid­la, kto­ré:
• naj­skôr na­čí­ta no­vý ná­zov pre do­ku­men­ty,
• za­pí­še no­vý ná­zov do všet­kých ozna­če­ných do­ku­men­tov,
• na­ko­niec zob­ra­zí po­čet up­ra­ve­ných do­ku­men­tov.

1. V po­hľa­de Po­dľa dá­tu­mu vy­tvor­te tla­čid­lo Zme­na náz­vu do­ku­men­tov.
2. Ako kód vlož­te:

...ini­cia­li­zá­cia ko­lek­cie coll po­dľa pred­chád­za­jú­ce­ho prík­la­du...
Dim newTit­le As String
newTit­le=In­put­box("Za­daj­te, pro­sím, no­vý ná­zov:")
Dim doc As No­tes­Do­cu­ment, i As In­te­ger
For i=1 To coll.Count
      Set doc=coll.GetNthDo­cu­ment(i)
      doc.Sub­ject=newTit­le
      Call doc.Sa­ve(True, Fal­se)
Next
Mes­sa­ge­box "Po­čet spra­co­va­ných do­ku­men­tov: "+ Cstr(coll.Count)

Po­dsta­ta kó­du spo­čí­va:
• V na­čí­ta­ní no­vé­ho náz­vu z di­aló­go­vé­ho ok­na (In­put) do pre­men­nej newTit­le
• V cyk­le od 1 po cel­ko­vý po­čet ozna­če­ných do­ku­men­tov (coll.Count):
o Ini­cia­li­zu­je in­štan­ciu pre prís­luš­ný do­ku­ment (doc)
o Do po­ľa Sub­ject za­pí­še ob­sah pre­men­nej newTit­le
o Zme­ny ulo­ží do do­ku­men­tu
• Na­ko­niec zob­ra­zí po­čet spra­co­va­ných do­ku­men­tov

3. Ulož­te po­hľad a over­te fun­kčnosť tla­čid­la. Všim­ni­te si, že v po­hľa­de sa zme­na náz­vu nep­re­ja­ví hneď, ale až po je­ho ak­tua­li­zá­cii (F9 – Ref­resh). Ten­to drob­ný ne­dos­ta­tok od­strá­ni­me v ďal­šej čas­ti.

PRAX: NO­TE­SUIWOR­KSPA­CE
Tá­to trie­da pred­sta­vu­je ak­tuál­ne ot­vo­re­né ok­no v klien­to­vi Lo­tus No­tes a je zá­kla­dom pre ďal­šie front-end trie­dy. Prá­ve tú­to trie­du vy­uži­je­me na vy­rie­še­nie opí­sa­né­ho prob­lé­mu tak, že na ko­niec kó­du dopl­ní­me:

...
Dim uiwork As New No­te­sUIWor­kspa­ce
Call uiwork.ViewRef­resh()

Over­te fun­kčnosť tla­čid­la a všim­ni­te si, že zme­na náz­vov do­ku­men­tov v po­hľa­de sa pre­ja­ví auto­ma­tic­ky.

Me­tó­da Pic­kLis­tCollec­tion tej­to trie­dy sa vy­uží­va na inter­ak­tív­ny vý­ber do­ku­men­tov z ak­tuál­nej da­ta­bá­zy ale­bo iných da­ta­báz Lo­tus No­tes.

PRAX: NO­TE­SUIWOR­KSPA­CE.PIC­KLIS­TCOLLEC­TION
Po­uži­tie tej­to trie­dy si uká­že­me na prík­la­de tla­čid­la, kto­ré
• umož­ní vy­brať vzo­ro­vý do­ku­ment,
• po­dľa vzo­ro­vé­ho do­ku­men­tu pre­pí­še v ozna­če­ných do­ku­men­toch po­lia Sub­ject a Ca­te­go­ries.

1. V po­hľa­de Po­dľa dá­tu­mu vy­tvor­te tla­čid­lo Napl­ne­nie po­dľa vzo­ru.
2. Ako kód vlož­te:

...ini­cia­li­zá­cia ko­lek­cie coll po­dľa pred­chád­za­jú­ce­ho prík­la­du...
Dim vzor­Coll As No­tes­Do­cu­men­tCollec­tion
Dim uiwork As New No­te­sUIWor­kspa­ce
Set vzor­Coll=uiwork.Pic­kLis­tCollec­tion(3,Fal­se,db.Server,db.Fi­le­Path,"viewBy­Da­te","Vý­ber vzo­ru","Vy­ber­te vzor:")
Dim doc As No­tes­Do­cu­ment, vzor­Doc As No­tes­Do­cu­ment, i As In­te­ger
Set vzor­Doc=vzor­Coll.Get­Fir­stDo­cu­ment

For i=1 To Coll.Count
      Set doc=coll.GetNthDo­cu­ment(i)
      doc.Sub­ject=vzor­Doc.Sub­ject
      doc.Ca­te­go­ries=vzor­Doc.Ca­te­go­ries
      Call doc.Sa­ve(True, Fal­se)
Next
Call uiwork.ViewRef­resh()

3. Ulož­te po­hľad a over­te fun­kčnosť tla­čít­ka.

Na kó­de si hlav­ne všim­ni­te:

• pa­ra­met­re me­tó­dy Pic­kLis­tCollec­tion (po­drob­nos­ti opi­su­je DD Help),
• pri­ra­de­nie ob­sa­hu po­lí zo vzo­ro­vé­ho (vzor­Doc) do ak­tuál­ne spra­cú­va­né­ho do­ku­men­tu (doc).
Ten­to prís­tup sa čas­to po­uží­va aj na vy­tvá­ra­nie vä­zieb med­zi roz­lič­ný­mi da­ta­bá­za­mi Lo­tus No­tes.

TRIE­DA NO­TE­SUI­DO­CU­MENT
Tou­to trie­dou je rep­re­zen­to­va­ný ak­tuál­ne ot­vo­re­ný front-end do­ku­ment (te­da ten, čo je zob­ra­ze­ný na ob­ra­zov­ke klien­ta LN). Sprís­tup­ne­nie i je­ho vzťah k opi­so­va­né­mu back-end do­ku­men­tu cha­rak­te­ri­zu­je nas­le­du­jú­ca sché­ma.

LotusScript obr3.jpg

Obr. č.3


PRAX: NO­TE­SUI­DO­CU­MENT
S trie­dou No­te­sUI­Do­cu­ment sú­vi­sia aj uda­los­ti, kto­ré sa vy­ko­ná­va­jú pri ot­vá­ra­ní, ak­tua­li­zá­cii a za­tvo­re­ní do­ku­men­tu na pra­cov­nej ploc­he. Ten­to fakt mož­no vy­užiť v prí­pa­de, ak nap­rík­lad nec­hce­me, aby sa ot­vo­ril do­ku­ment, kto­rý má v nad­pi­se Neot­vá­rať:

1. V DD ot­vor­te for­mu­lár for­mDo­cu­ment
2. Do uda­los­ti QueryO­pen for­mu­lá­ra dopl­ňte kód:

Dim doc As No­tes­Do­cu­ment
Set doc=Sour­ce.Do­cu­ment
If Not(doc Is Not­hing) Then
If Instr(doc.Sub­ject(0),"Neot­vá­rať")>0 Then
Mes­sa­ge­box "Do­ku­ment """+doc.Sub­ject(0)+""" nie je mož­né ot­vo­riť."
Con­ti­nue=Fal­se
End If
End If

Všim­ni­te si:
• vy­tvo­re­nie in­štan­cie back-end do­ku­men­tu (doc) z front-end do­ku­men­tu (Sour­ce),
• po­dmien­ku If Not (doc Is Not­hing), kto­rá za­bez­pe­čí vy­ko­na­nie po­dmien­ky len v prí­pa­de exis­tu­jú­ce­ho (te­da nie no­vo­vyt­vá­ra­né­ho do­ku­men­tu),
• po­dmien­ku If Instr(...)>0, kto­rá zis­ťu­je prí­tom­nosť hľa­da­né­ho texto­vé­ho re­ťaz­ca,
• pri­ra­de­nie Con­ti­nue=Fal­se, kto­ré za­sta­ví ot­vá­ra­nie do­ku­men­tu.

3. For­mu­lár ulož­te a nás­led­ne over­te tak, že do niek­to­ré­ho z do­ku­men­tov vlo­ží­te nad­pis Neot­vá­rať.

SU­MA­RIZÁCIA
V 3. čas­ti sme si naz­na­či­li mož­nos­ti ma­ni­pu­lá­cie s do­ku­men­tom po­mo­cou back-end i front-end tried. V po­sled­nej čas­ti sa po­zrie­me na spra­co­va­nie jed­not­li­vých po­lí do­ku­men­tov i roz­ši­ru­jú­ce tec­hno­ló­gie, ako DXL či Xpa­ges.

Ďal­šie čas­ti >>

Zdroj: Infoware 6/2010



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

LO­TUS SCRIPT: Prá­ca s po­ľa­mi a do­mi­no XML / 4. časť
V poslednej časti seriálu sa pozrieme na spracovanie jednotlivých polí dokumentov technológiou Domino XML. čítať »
 
LO­TUS SCRIPT: Ma­ni­pu­lá­cia s do­ku­men­tmi / 3. časť
V predchádzajúcej časti seriálu sme si objasnili základné konštrukčné prvky LS a zároveň prístup k základným objektom Domino. Teraz budeme pokračovať mimoriadne praktickou časťou – manipuláciou s dokumentmi databázy Notes pomocou back-end i front-end tried. čítať »
 
LO­TUS SCRIPT: „Do­mi­no ob­jek­ty“ / 2. časť
V 1. časti seriálu sme sa zorientovali v problematike LotusScriptu (LS), vyskúšali si používanie Domino Designera a LS Debuggera pri tvorbe a odľaďovaní LS sekvencií. čítať »
 
LO­TUS SCRIPT: Zá­kla­dy / 1. časť
IBM Lotus Domino/Notes. Softvér, ktorý je od roku 1996 strategickou súčasťou portfólia IBM a v súčasnosti de facto štandard pre „collaboration“ systémy. čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter