16. august 2004 - 14:45Der 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
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Kan du ikke bare bruge en Refresh i stedet for at lukke og genåbne?
Synes godt om
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.
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.
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",)
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.
Synes godt om
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
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
eller t2-t5 ned i underformularen, der er masser af muligheder c",)
Synes godt om
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..
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",)
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
Synes godt om
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...
Nej det mener jeg heller ikke, det må da også være irriterende at se på i længden c",)
Synes godt om
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.... !~)
Synes godt om
Ny brugerNybegynder
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.