Avatar billede dsjk Novice
26. juli 2002 - 21:40 Der er 18 kommentarer og
1 løsning

4 terminer - gruppeboks bestemmer de 3

I en formular har jeg indtastet nogle biler, de biler kan have fra 1 til 4 terminer.
Felterne i min formular hedder 1termin, 2termin osv.
Man kan i felterne vælge hvilken måned det skal være, og værdien der gemmes er månedes tal (ex. juni = 6)

Jeg har nu lavet en gruppeboks, hvor kan vælge hvor mange terminer der er, (betales det helårlig, halvårlig eller hver kvartal)
Helårlig giver værdien 1
halvårlig 2
og kvartal 3

Jeg vil så slette 2-4 termin, så man kun kan vælge antal terminer og hvornår første termin er.
Den skal så selv regne ud hvad der skal stå i 2-4 termin.
Ex. 1
der er valg helårlig:
1 termin er sat til juni (der gemmes et 6 tal)
2-4 termin skal være tomme
Ex. 2
der er valg halvårlig
1 termin er sat til august (der gemmes et 8)
2 termin bliver automatisk gemt med 2 (februar)
Ex. 3
der er valg kvartal
1 termin er sat til januar (der gemmes 1)
2 termin gemmes med 4
3 termin gemmes med 7
4 termin gemmes med 10

Kan det lade sig gøre? og hvordan?


Det skal også gælde for de biler der er tastet ind.
Er der 4 terminer skal kvartal være valg osv.

dsjk
Avatar billede terry Ekspert
26. juli 2002 - 22:29 #1
can we close the previous question please?
Avatar billede nih Novice
26. juli 2002 - 22:38 #2
Jeg ville nok lave en public function i et modul:

Nyt modul:
Function getTermin(resTerminer As Variant, _
                antal As Integer, _
                startMnd As Integer) As Boolean

  getTermin = False
  If Not startMnd >= 1 Then Exit Function
   
  Select Case antal
  Case 1:
    If Not startMnd <= 12 Then Exit Function
    resTerminer = Array(startMnd, Null, Null, Null)
  Case 2:
    If Not startMnd <= 6 Then Exit Function
    resTerminer = Array(startMnd, startMnd + 6, Null, Null)
  Case 4:
    If Not startMnd <= 3 Then Exit Function
    resTerminer = Array(startMnd, startMnd + 3, startMnd + 6, startMnd + 9)
  Case Else:
    getTermin = False
  End Select

  getTermin = True
End Function

og så på din form aktivere vha en knap

Private Sub Kommandoknap19_Click()
  Dim maaneder As Variant
 
  If Not getTermin(maaneder, rmAntalTerminer, cmboMnd) Then
    MsgBox "WRONG"
    Exit Sub
  End If
 
    Me.txtTermin1 = maaneder(0)
    Me.txtTermin2 = maaneder(1)
    Me.txtTermin3 = maaneder(2)
    Me.txtTermin4 = maaneder(3)

End Sub

Niels
Avatar billede nih Novice
26. juli 2002 - 22:39 #3
Hi Terry :o)
Avatar billede terry Ekspert
26. juli 2002 - 22:40 #4
Hi Niels, hows things?
Avatar billede nih Novice
26. juli 2002 - 22:42 #5
well, another night on work. Gaaaaab

Niels
Avatar billede nih Novice
26. juli 2002 - 22:43 #6
And I don't wanna hear about your hollyday

;o)
Avatar billede terry Ekspert
26. juli 2002 - 22:56 #7
just five more days Niels and I'm OFF!

Niels a question!
I am sure that earlier today there was about 2000 points (at least 1000) between Thomas and I, but now there is only about 250! I just cant explain it, Thomas hasnt been active for a couple of weeks now! Do you have any ideas?
Avatar billede nih Novice
26. juli 2002 - 23:06 #8
Nej, det ved jeg ikke hvordan det kan gå til.
Men jeg er da røget helt op på en femte plads :o)
Avatar billede terry Ekspert
26. juli 2002 - 23:12 #9
Yes I noticed your fifth place, well done, but your points are correct arent they?
Avatar billede nih Novice
26. juli 2002 - 23:17 #10
Faktisk tror jeg at det er for lidt - du skal gange mine pts med Pi.

Niels
Avatar billede terry Ekspert
26. juli 2002 - 23:18 #11
:o)
Avatar billede mugs Novice
26. juli 2002 - 23:30 #12
nih > 5. plads!! Det må ganske givet være en fejl. :o)
Avatar billede dsjk Novice
27. juli 2002 - 00:14 #13
nih>

Hmm, kan få det til at virke, er der noget bestemt jeg skal skifte ud med mine felter/variabler?

Jeg havde forestillet mig noget ala,
  If IsNull(Me.[2 Termin]) Then
    Me.Ramme141 = 1
  End If
  If Not IsNull(Me.[2 Termin]) And IsNull(Me.[3 Termin]) Then
    Me.Ramme141 = 2
  End If
  If Not IsNull(Me.[3 Termin]) Then
    Me.Ramme141 = 3
  End If

til at bestemme hvor det skal stå ved de poster der er sat ind, men ved bare ikke helt hvor koden skal sættes ind, eller om den virker.

Og så næsten det omvendte til at rette termin.

dsjk
Avatar billede nih Novice
27. juli 2002 - 00:34 #14
dsjk>
Vil du ændre din tabel struktur ??,
eller vil du 'bare' gøre din form mere indtastningsvenlig ??
Avatar billede nih Novice
27. juli 2002 - 00:56 #15
lav en function mere i dit modul:
Function set_Mnd_1termin(t1, _
                        t2, _
                        t3, _
                        t4, _
                        startMnd As Integer, _
                        AntalTermin As Integer) As Boolean
 
  set_Mnd_1termin = False
  If IsNull(t1) Then Exit Function
  If IsNull(t2) And IsNull(t3) And IsNull(t4) Then
    startMnd = t1
    AntalTermin = 1
  End If
  If (Not IsNull(t2)) And IsNull(t3) And IsNull(t4) Then
    startMnd = t1
    AntalTermin = 2
  End If
  If Not IsNull(t2) And Not IsNull(t3) And Not IsNull(t4) Then
    startMnd = t1
    AntalTermin = 4
  End If
End Function
Avatar billede nih Novice
27. juli 2002 - 01:03 #16
og så på formens vedAktuel

Private Sub Form_Current()
  Dim maaneder As Integer, terminer As Integer
 
  If Me.NewRecord Then
    If Not getTermin(maaneder, rmAntalTerminer, cmboMnd) Then
      MsgBox "WRONG"
      Exit Sub
    End If
 
    Me.txtTermin1 = maaneder(0)
    Me.txtTermin2 = maaneder(1)
    Me.txtTermin3 = maaneder(2)
    Me.txtTermin4 = maaneder(3)
  Else
    set_Mnd_1termin Me![termin 1], _
                Me![termin 2], _
                Me![termin 3], _
                Me![termin 4], _
              cmboMnd, _
              rmAntalTerminer
  End If
 
End Sub

Niels
Avatar billede dsjk Novice
27. juli 2002 - 01:12 #17
jeg vil kun gøre den mere indtastevenlig.

Kigger lige på dit svar i morgen eller overmorgen

Har imellem tiden sat dette ind på VedAktuelt:
Private Sub Form_Current()
  If IsNull(Me.[2 Termin]) Then
    Me.Ramme141 = 1
  End If
  If Not IsNull(Me.[2 Termin]) And IsNull(Me.[3 Termin]) Then
    Me.Ramme141 = 2
  End If
  If Not IsNull(Me.[3 Termin]) Then
    Me.Ramme141 = 3
  End If
End Sub

og dette ved VedTimerudløb og sat timer til 1
Private Sub Form_Timer()
  Dim iTerm1 As Integer, iTerm2 As Integer, iTerm3 As Integer, iTerm4 As Integer
 
  If Me.Ramme141 = 1 Then
    Me.[2 Termin] = ""
    Me.[3 Termin] = ""
    Me.[4 Termin] = ""
  End If
  If Me.Ramme141 = 2 Then
    iTerm1 = Me.[1 Termin]
    iTerm2 = (iTerm1 + 6)
    If iTerm2 > 12 Then
      iTerm2 = iTerm2 - 12
    End If
    Me.[2 Termin] = iTerm2
    Me.[3 Termin] = ""
    Me.[4 Termin] = ""
  End If
  If Me.Ramme141 = 3 Then
    iTerm1 = Me.[1 Termin]
    iTerm2 = (iTerm1 + 3)
    If iTerm2 > 12 Then
      iTerm2 = iTerm2 - 12
    End If
    iTerm3 = (iTerm1 + 6)
    If iTerm3 > 12 Then
      iTerm3 = iTerm3 - 12
    End If
    iTerm4 = (iTerm1 + 9)
    If iTerm4 > 12 Then
      iTerm4 = iTerm4 - 12
    End If
    Me.[2 Termin] = iTerm2
    Me.[3 Termin] = iTerm3
    Me.[4 Termin] = iTerm4
  End If

End Sub

Vidste ikke helt hvor jeg eller kunne sætte det, de steder jeg prøvede virkede ikke.
Men de virker begge.

Men som skrevet, så kigger jeg lige lidt mere på dine svar.

dsjk
Avatar billede dsjk Novice
29. juli 2002 - 18:28 #18
kan ikke få det til at virke.

Jeg får fejlen:

Compiler error:
Expected variable or procedure, not module

dsjk
Avatar billede dsjk Novice
15. august 2002 - 13:11 #19
brugte eget svar.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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