Avatar billede Slettet bruger
16. august 2004 - 14:45 Der er 28 kommentarer og
1 løsning

åbne og lukke formular med vba

Jeg har en knap i en underformular, der går til næste post i hovedformularen. Der er så et vist antal oversigter åben samtidig og disse er linket til hovedformularen, dvs. at hvis de bliver lukket og så åbnet igen, så står de på den samme post som hovedformularen.

Jeg har lidt problemer med VBA'en (jeg er nybegynder), nedenfor er hvad jeg er kommet til, det virker selvfølgelig ikke!

Der er 4 skjulte felter i hovedformularen, nemlig t2,t3,t4 og t5. De får tildelt værdien 1, hvis henholdsvis oversigt2, oversigt3, oversigt4 eller oversigt5 er åben.

Formålet med nedenstående kode er, at den skal rykke hovedformularen 1 post frem og derefter skal den lukke og derpå åbne, de oversigter, som er åbne.

Private Sub Næste_produktbedømmelse_overdommer_Click()
DoCmd.GoToRecord acDataForm, "formular bedømmelse", acNext
For Id = 2 To 5
If "t(Id)" = 1 Then
DoCmd.Close acForm, "oversigt(id)"
DoCmd.OpenForm "oversigt(id)"
End If
Next
End Sub

Er der nogen foreslag?
Avatar billede mugs Novice
16. august 2004 - 15:12 #1
Hvad er formålet med at lukke og åbne oversigterne?
Avatar billede hubs Nybegynder
16. august 2004 - 15:12 #2
Kan du ikke bare bruge en Refresh i stedet for at lukke og genåbne?
Avatar billede Slettet bruger
16. august 2004 - 15:15 #3
Godt spørgsmål...
Jeg har bygget det sådan op at oversigterne finder data ud fra nogle af felterne i hovedformularen. Det er ikke den meste fikse løsning, men jeg skulle jo starte et sted.
Avatar billede mugs Novice
16. august 2004 - 15:15 #4
hubs > Jeg tror også, at problemet er en manglende opdatering af oversigterne.
En Refresh opdaterer eksisterende poster, men er der tale om en ny post, skal der benyttes en Requery.
Avatar billede mugs Novice
16. august 2004 - 15:17 #5
Så bør du først prøve hubs' forslag:

Private Sub Næste_produktbedømmelse_overdommer_Click()
DoCmd.GoToRecord acDataForm, "formular bedømmelse", acNext
Me.Refresh
End Sub
Avatar billede hubs Nybegynder
16. august 2004 - 15:21 #6
Prøv evt. med følgende:

Private Sub Næste_produktbedømmelse_overdommer_Click()
  DoCmd.GoToRecord acDataForm, "formular bedømmelse", acNext
  Me.Refresh
End Sub

og hvis det ikke virker så prøv i stedet med Me.Requery som mugs skriver c",)
Avatar billede hubs Nybegynder
16. august 2004 - 15:21 #7
hov skulle vist lige ha refresh'et spørgsmålet sry mugs c",)
Avatar billede Slettet bruger
16. august 2004 - 15:23 #8
Oversigterne er nogle formularer, som står åbne samtidig med hovedformularen.
Avatar billede Slettet bruger
16. august 2004 - 15:26 #9
Me.Refresh kan jeg ikke få til at virke.
Avatar billede hubs Nybegynder
16. august 2004 - 15:33 #10
aaah dine oversigter er altså "seperate" formularere og ikke underformularere
Avatar billede Slettet bruger
16. august 2004 - 15:35 #11
ja
Avatar billede hubs Nybegynder
16. august 2004 - 15:40 #12
Jeg har lige et møde om 5 min, men hvis det kan vente vil jeg gerne kigge på det om en times tid?
Avatar billede Slettet bruger
16. august 2004 - 15:43 #13
Jeg kommer først tilbage kl. 8 i morgen, så vil det være perfekt hvis du har et forslag og så ta'r vi det derfra.
Tak...
Avatar billede hubs Nybegynder
16. august 2004 - 15:48 #14
det er bare en date c",) prøv evt. og leg lidt med følgende:

Private Sub Næste_produktbedømmelse_overdommer_Click()
  Forms![navn-oversigt 1].refresh
  Forms![navn-oversigt 2].refresh
  Forms![navn-oversigt 3].refresh
  Forms![navn-oversigt 4].refresh
  Forms![navn-oversigt 5].refresh
End Sub

Den kommer sikkert med en fejl hvis den pågældende oversigt ikke er åben, men det kan vi sagtens klare... tror jeg c",)
Avatar billede mugs Novice
16. august 2004 - 17:29 #15
"Me.Refresh kan jeg ikke få til at virke."

Nej det kan ikke fungere. Jeg antog at der var tale om en Parentform med en række underformularer.

Det reserverede ord Me refererer til den altid aktive formular, d.v.s. at du er nødt til at flytte markøren til en form for at Me skal fungere.
Avatar billede Slettet bruger
17. august 2004 - 08:18 #16
Private Sub Næste_produktbedømmelse_overdommer_Click()
DoCmd.GoToRecord acDataForm, "formular bedømmelse", acNext
DoCmd.Close acForm, "oversigt2"
DoCmd.OpenForm "oversigt2"
DoCmd.Close acForm, "oversigt3"
DoCmd.OpenForm "oversigt3"
DoCmd.Close acForm, "oversigt4"
DoCmd.OpenForm "oversigt4"
DoCmd.Close acForm, "oversigt5"
DoCmd.OpenForm "oversigt5"
End Sub

Dækker mine behov, men så står alle oversigt, også de tomme, åbne. Derfor skal den kun lukke/åbne dem, som er åbnet. Eksempelvis hvis [forms]![formular bedømmelse]![t2]=1
Avatar billede hubs Nybegynder
17. august 2004 - 08:33 #17
Godmorgen c",)

Vi du bare lige skal ha' en hurtigt løsning kan du vist bare bruge følgende.

Private Sub Næste_produktbedømmelse_overdommer_Click()
  DoCmd.GoToRecord acDataForm, "formular bedømmelse", acNext
  If Me.t2 = 1 Then forms!oversigt2.refresh
  If Me.t3 = 1 Then forms!oversigt3.refresh
  If Me.t4 = 1 Then forms!oversigt4.refresh
  If Me.t5 = 1 Then forms!oversigt5.refresh
End Sub
Avatar billede hubs Nybegynder
17. august 2004 - 08:38 #18
Har lige lavet en lille test og det virker umiddelbart fint nok c",)

hvis der stadigvæk er problemer kan du evt. lige sende DB'en til mig, så skal jeg nok kigge på den.
Avatar billede Slettet bruger
17. august 2004 - 08:53 #19
Det giver en compile error:
Method or data member not found.

og den stopper ved t2, men t2 ligger også i hovedformularen [formular bedømmelse] og knappen med hændelsesproceduren ligger i underformularen.
Avatar billede hubs Nybegynder
17. august 2004 - 08:59 #20
AAAh c",)

jamen så prøv i stedet med If [forms]![formular bedømmelse]![t2] = 1 Then...

Eller smid knappen op i hovedformularen c",)
Avatar billede hubs Nybegynder
17. august 2004 - 09:00 #21
eller t2-t5 ned i underformularen, der er masser af muligheder c",)
Avatar billede Slettet bruger
17. august 2004 - 09:16 #22
Dette blev løsningen:

Private Sub Næste_produktbedømmelse_overdommer_Click()
  DoCmd.GoToRecord acDataForm, "formular bedømmelse", acNext
  If [Forms]![formular bedømmelse]![T2] = 1 Then
  DoCmd.Close acForm, "oversigt2"
  DoCmd.OpenForm "oversigt2"
  End If
  If [Forms]![formular bedømmelse]![T3] = 1 Then
  DoCmd.Close acForm, "oversigt3"
  DoCmd.OpenForm "oversigt3"
  End If
  If [Forms]![formular bedømmelse]![T4] = 1 Then
  DoCmd.Close acForm, "oversigt4"
  DoCmd.OpenForm "oversigt4"
  End If
  If [Forms]![formular bedømmelse]![T5] = 1 Then
  DoCmd.Close acForm, "oversigt5"
  DoCmd.OpenForm "oversigt5"
  End If
End Sub

Jeg tror det var min opbygning af oversigterne, som gjorde at jeg ikke kunne bruge refresh...

hubs>Tak for hjælpen, send et svar for at få points..
Avatar billede hubs Nybegynder
17. august 2004 - 09:28 #23
Behøver ikke nogen point, så giv dem bare til mugs eller behold dem til en anden god gang c",)

Jeg kan godt nok ikke forstå, hvorfor Refresh ikke vil virke hos dig. Jeg vil gerne ta' en kigger på den, så du kan blive fri for at skulle åbne og lukke formularerne hele tiden.

Bare send den til ##jacob.simonsen(snabela)rockwool.com##, hvis det er. c",)
Avatar billede hubs Nybegynder
17. august 2004 - 09:41 #24
Lige en hurtigt sidebemærkning.

Da du prøvede med nedenstående, fik du en fejlmeddelse eller skete der bare ikke noget? Du kunne evt. også prøve med .Requery i stedet for, som mugs foreslog tidligere.

Private Sub Næste_produktbedømmelse_overdommer_Click()
  DoCmd.GoToRecord acDataForm, "formular bedømmelse", acNext
  If [Forms]![formular bedømmelse]![T2] = 1 Then forms!oversigt2.refresh
  If [Forms]![formular bedømmelse]![T3] = 1 Then forms!oversigt3.refresh
  If [Forms]![formular bedømmelse]![T4] = 1 Then forms!oversigt4.refresh
  If [Forms]![formular bedømmelse]![T5] = 1 Then forms!oversigt5.refresh
End Sub
Avatar billede Slettet bruger
17. august 2004 - 09:48 #25
Der skete ikke noget.

P.s. hvordan lukker man et spørgsmål, hvis der ikke er nogen, som får points...
Avatar billede hubs Nybegynder
17. august 2004 - 10:05 #26
du ligger bare selv et svar og markere derefter dit navn og trykker accept
Avatar billede mugs Novice
17. august 2004 - 10:17 #27
Det kan ikke passe at det skal være nødvendigt at lukke og åbne formularerne.
Avatar billede hubs Nybegynder
17. august 2004 - 10:19 #28
Nej det mener jeg heller ikke, det må da også være irriterende at se på i længden c",)
Avatar billede Slettet bruger
17. august 2004 - 10:34 #29
Ja, jeg bruger opdaterskærm, men i har ret. Jeg må tage et kig på det når jeg har tid, lige nu sidder jeg med nogle forespørgsler, til nogle "dejlige" diagrammer, så jeg kan få afsluttet dette program og starte næste projekt. Men jeg skal nok se om jeg ikke kan få en refresh til at virke....  !~)
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