Avatar billede sbay Nybegynder
03. februar 2006 - 14:54 Der er 22 kommentarer og
1 løsning

Lille script til felt

Hejsa

Jeg har to felter, hvor felt A indeholder et tal. Felt B indeholder en typeangivelse (om det er timer eller kroner).

Begge felter kan indeholde flere linier.

Nu vil jeg gerne lave et lille script der, når jeg gemmer formen, udfylder felt C med de entry's fra felt A, der er af typen Timer. Hvordan gør man det?

Her en stump af det jeg eksperimenterer med:

For k=Lbound(Source.BBudget) To Ubound(Source.BBudget)
If (Source.BTypeShort(k) = "Kr") Then
Source.BBudgetNoHours(0) = Source.BBudget(k)
End If
Next
Avatar billede jogii Nybegynder
04. februar 2006 - 11:35 #1
Jeg går ud fra at det er timerne du vil filtrere ud, ikke sandt? Men din eksperimentalkode prøver at filtrere kroner ud, ikke?
Lad os se om vi kan lave begge ting samtidig. Jeg har ikke testet koden, skiver blot frit fra fingrene


'Midlertidigt array til hver type data
Redim hours(0) as Long
Redim nohours(0) as Long
'Tællere til hvert array
hcount=0
nhcount=0

For k=Lbound(Source.BBudget) To Ubound(Source.BBudget)
If (Source.BTypeShort(k) = "Kr") Then
Redim nohours(nhcount)
nohours(nhcount) = Source.BBudget(k)
'Opdater tælleren , så næste redim skaber plads til det nhcounte element
nhcount=nhcount+1
elseif (Source.BTypeShort(k) = "Timer") Then
Redim hours(hcount)
hours(hcount) = Source.BBudget(k)
'Opdater tælleren , så næste redim skaber plads til det hcounte element
hcount=hcount+1
else
nothing
End If
Next
'Tildel array-data til de pågældende felter
Source.BBudgetNoHours = nohours
Source.BBudgetHours = hours

Grunden til at du skal oprette REDIM-arrays er at du ikke på forhånd ved hvor mange elementer der skal være.

Det kan være at det faktisk er nemmere at lave dette her i @Formula. Hvilken version af Notes anvender du? @For kom med N6.
Avatar billede cdelicht Nybegynder
04. februar 2006 - 11:35 #2
Jeg vil anbefale dig, at lægge din kode i QueryClose på formen, ellers bliver den beregenet hver gang du gemmer SELV om querySave måske ikke fuldføres.
Din kode indikerer iøvrigt at BBudget er et mulivalue felt, men du får ikke summeret værdierne i BBudgetNoHours - kun tildelt sidste værdi der opfylder betingelsen i IF særtningen.
Med summering så blive det noget i stil med dette:

dim dos as notesdocumet
set doc = source.document
dim CounterSum as integer
CounterSum=0
with doc ´så slipper du for at skrive "doc" hele tiden !
for k=0 to Ubound( .BBudget(0))
if .BtypeShort(k)="Kr" then
CounterSum=CounterSum + .BBudget(k) ' her summeres BBudget værdierne
end if
next
.BBudgetNoHours=CounterSum 'tildeling af sum til feltet
call .save(true,false) ´husk at gemme!
end with
Avatar billede cdelicht Nybegynder
04. februar 2006 - 11:37 #3
Godt sSå - med 14 sec's interval...
jogii, vi må se at få et liv :-))))
Avatar billede jogii Nybegynder
04. februar 2006 - 11:44 #4
Frokost, Christian, frokost  :-)
Avatar billede sbay Nybegynder
06. februar 2006 - 10:10 #5
Har prøvet med denne her:

Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Dim k As Variant
Dim dos As notesdocumet
Set doc = source.document
Dim CounterSum As Integer
CounterSum=0
With doc 'så slipper du for at skrive "doc" hele tiden !
For k=0 To Ubound(.BBudget(0))
If .BtypeShort(k)="Kr" Then
CounterSum=CounterSum + .BBudget(k) ' her summeres BBudget værdierne
End If
Next
.BBudgetNoHours=CounterSum 'tildeling af sum til feltet
Call .save(True,False) 'husk at gemme!
End With
End Sub

Men får en fejl: Variable DOC not declared
og disse to linier er røde:
Dim dos As notesdocumet
Set doc = source.document


Jeg bruger i øvrigt 6.5.3!
Avatar billede cdelicht Nybegynder
06. februar 2006 - 10:12 #6
Stavefejl !
Dim dos As notesdocumet
Dim dos As notesdocumeNt
Avatar billede jogii Nybegynder
06. februar 2006 - 10:17 #7
Dim doC As notesdocumeNt
Avatar billede sbay Nybegynder
06. februar 2006 - 10:22 #8
Ok - den burde jeg nok have set - men dagen startede med at jeg gik ind i væggen til bruseren... så ved man ligsom hvordan dagen bliver.....

Når jeg lukker/gemmer et dokument, får jeg en type mismatch. De to felter er sat some typen: Text
Avatar billede cdelicht Nybegynder
06. februar 2006 - 10:23 #9
Du får problemer med at lægge værdierne sammen så.. ;-)
Brug i stedet:
CounterSum=CounterSum + Cint(.BBudget(k)
Avatar billede jogii Nybegynder
06. februar 2006 - 10:24 #10
)
Avatar billede jogii Nybegynder
06. februar 2006 - 10:25 #11
Så kan vi da prøve at hjælpe dig igennem dagen ;-)
Avatar billede sbay Nybegynder
06. februar 2006 - 11:04 #12
Tak :-)

Den går kløjs i det efter Print "33333". BBudget er text og BBudgetNoHours er number!

Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Dim k As Variant
Dim doc As notesdocument
Set doc = source.document
Dim CounterSum As Integer
Print "xxxx1"
CounterSum=0
With doc 'så slipper du for at skrive "doc" hele tiden !
Print "333333333"
For k=0 To Ubound(.BBudget(0))
Print "xxxx2"
If .BtypeShort(k)="Kr" Then
Print "xxx3"
CounterSum=CounterSum + Cint(.BBudget(k)) ' her summeres BBudget værdierne
End If
Next
Print "xxx3"
.BBudgetNoHours=CounterSum'tildeling af sum til feltet
Call .save(True,False) 'husk at gemme!
End With
End Sub
Avatar billede cdelicht Nybegynder
06. februar 2006 - 11:06 #13
For k=0 To Ubound(.BBudget(0)) ændres til
For k=0 To Ubound(.BBudget)
Avatar billede jogii Nybegynder
06. februar 2006 - 11:07 #14
For k=0 To Ubound(.BBudget)

uden (0)
Avatar billede sbay Nybegynder
06. februar 2006 - 11:13 #15
Det har jeg lige prøvet, men så går den i overflow!
Avatar billede cdelicht Nybegynder
06. februar 2006 - 11:15 #16
Er BBUdget et multivalue felt, eller er der altid kun en værdi i feltet?
Avatar billede sbay Nybegynder
06. februar 2006 - 11:20 #17
det er et multivalue felt!
Avatar billede jogii Nybegynder
06. februar 2006 - 11:23 #18
Hvis dokumentet er nyt, så kan det være at "Source.Budget" ikke er særlig veldefineret ... jeg tænker bare højt  ... har du prøvet at arbejde på et "gemt" dokument?
Avatar billede cdelicht Nybegynder
06. februar 2006 - 11:26 #19
scriptet ligger i queryclose, så dokumentet er gemt...
Avatar billede sbay Nybegynder
06. februar 2006 - 11:30 #20
fet er på et gemt dokument jeg prøver!
Avatar billede jogii Nybegynder
06. februar 2006 - 11:39 #21
Kender du LotusScript debugger?  File -> Tools -> Debug LotusScript
Herefter vil du kunne følge kodens afvikling ved at trykke <F8>.
På de tilhørende faneblade kan du enten se dine print-sætningers udskrift eller se alle variable...
Tilføj evt. en print k linie, så du kan følge k's værdier.
Avatar billede sbay Nybegynder
06. februar 2006 - 13:15 #22
Det var jo bare fordi tallet blev større end en integer.... Så nu virker det!

jogii - smid lige et svar også - så får i lidt point hver!
Avatar billede jogii Nybegynder
06. februar 2006 - 13:18 #23
hi
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

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