Avatar billede gylling Juniormester
08. oktober 2003 - 17:55 Der er 17 kommentarer og
1 løsning

Luk automatisk en for mular der er åben

Hvordan / Hvilken kode skal man bruge for at man kan lukker en formular der er åben, når man åbner en anden formular, uden at skulle angive den formular der er åben.
Avatar billede henrik13 Nybegynder
08. oktober 2003 - 18:01 #1
Det kan ikke lade sig gørre.
Avatar billede gylling Juniormester
08. oktober 2003 - 18:08 #2
----> Det kan ikke passe!!!!!!
Avatar billede henrik13 Nybegynder
08. oktober 2003 - 18:09 #3
Har du formular1 + 2 kan du ved åbning af formular2 indskrive denne sætning:
DoCmd.Close acForm, "Formular1"
Vh Henrik13
Avatar billede henrik13 Nybegynder
08. oktober 2003 - 18:11 #4
Jeg kan lave en demo.
Avatar billede fdata Forsker
08. oktober 2003 - 18:35 #5
DoCmd.Close Me.Name
Avatar billede terry Ekspert
08. oktober 2003 - 18:48 #6
gylling>This link will show you how to close all forms then once that is done you can open your other form.
http://www.mvps.org/access/forms/frm0040.htm
Avatar billede sjap Praktikant
08. oktober 2003 - 18:57 #7
Function CloseAllFormsExceptCurrent()
Dim frm As Form
Dim frmCurrentForm As Form
 
Set frmCurrentForm = Screen.ActiveForm
For Each frm In Forms
    If frm.Name <> frmCurrentForm.Name Then
        DoCmd.Close acForm, frm.Name
    End If
Next

End Function
Avatar billede sjap Praktikant
08. oktober 2003 - 19:36 #8
Hmm jeg kan ikke engang selv få den ovenstående til at virke (den starter før formularen er åben også kan den ikke finde Screen.Activeform). Alternativt kan funktionen kaldes med navnet på den aktuelle formular (dvs. der der ikke skal lukkes):

Function CloseAllFormsExceptCurrent(sExcludeForm As String)
Dim frm As Form

For Each frm In Forms
    If frm.Name <> sExcludeForm Then DoCmd.Close acForm, frm.Name
Next frm

End Function
Avatar billede terry Ekspert
08. oktober 2003 - 19:57 #9
the anwer is 08/10-2003 18:48:50!
Avatar billede sjap Praktikant
08. oktober 2003 - 20:05 #10
Nåh ja, der står da lidt i bunden, der minder lidt om mit forslag. Jeg tillod mig blot at gå et skridt længere, og foreslå hvordan det kan implementeres.
Avatar billede terry Ekspert
08. oktober 2003 - 20:11 #11
superjap>I havent tried this myslef but the method you are using doesnt work according to the article! Thats why they suggest another method-

For Each frm In Forms ..... doesnt work according to the article!
Avatar billede terry Ekspert
08. oktober 2003 - 20:12 #12
So the answer is to either continue to remove the first item in the collection until there are no items left or start at the top end of the collection and shave them off at the top until you've gone through all of them. So either

  do while forms.count>0     
    docmd.close acform,forms(0).name 
  loop
or

  dim intx as integer 
  dim intCount as integer 
  intCount = Forms.count-1
  for intX= intCount to 0 step -1   
    docmd.close acform,forms(intX).name
  next
There is a difference between the two, with the second method you can conditionally leave forms open, you can't with the first version, so you can do something like this in the loop

  for intX= intCount to 0 step -1
        if forms(intX).Name <> "MyFormToKeepOpen" then
            docmd.close acform,forms(intX).name       
        end if   
  next
Avatar billede terry Ekspert
08. oktober 2003 - 20:15 #13
and we could also make a function

Function CloseEm(formName as string)

dim intx as integer 
dim intCount as integer

for intX= intCount to 0 step -1
if forms(intX).Name <> formName  then
  docmd.close acform,forms(intX).name       
end if   
next

End function

Then you could call the function

CloseEm me.name
Avatar billede terry Ekspert
08. oktober 2003 - 20:17 #14
Little slip up there :o)

Function CloseEm(formName as string)

dim intx as integer 
dim intCount as integer
intCount = Forms.count-1


for intX= intCount to 0 step -1
if forms(intX).Name <> formName  then
  docmd.close acform,forms(intX).name       
end if   
next

End function

Then you could call the function

CloseEm me.name
Avatar billede sjap Praktikant
08. oktober 2003 - 21:51 #15
Terry
Oops! Jeg læste ikke så langt. Jeg så kun "will produce the same result as" og så læste jeg ikke længere - der er for mange ord :o)

Har testet det, og det er (selvfølgelig) korrekt, at ikke alle åbne formularer lukkes.

Jeg har vist prøvet noget lignende for mange år siden, da jeg lavede et program, der fjernede alle sammenkædede tabeller. Så efter mange år fik jeg en forklaring på problemet. Utroligt men sandt!
Avatar billede terry Ekspert
09. oktober 2003 - 08:34 #16
:o)
Avatar billede gylling Juniormester
09. oktober 2003 - 09:13 #17
---->>terry. tusind tak det virker
Avatar billede terry Ekspert
09. oktober 2003 - 19:40 #18
selv tak
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