Avatar billede per2edb Praktikant
23. september 2014 - 13:24 Der er 22 kommentarer og
3 løsninger

Opstart på en form

Call LoadObjectToMainMenu("Ordre",..........

Dette er lavet så det kalder en form med navn Ordre.
På formen ligger flere subforme
Mit problem er 1. tilgang ikke er Main formen men en af subformene
Jeg har prøvet at styre det med tab men det er ikke nok.

Har man en kommando der placerer start a la Ordre/subform1
og Ordre/Ordre for main formen
Avatar billede fdata Forsker
23. september 2014 - 14:00 #1
Man kunne lægge lidt kode i Ordre's VedÅbning:

Me.subform1.Setfocus
DoCmd.GoToControl ("DitFelt")

... og så kan du evt. styre hvilken subform, der skal aktiveres, via OpenArgs (som du sætter i kaldet af formen):

Select Case Me.OpenArgs
  Case 0
    'Ingenting
  Case 1
    Me.subform1.Setfocus
    DoCmd.GoToControl ("DitFelt1")
  Case 2
    Me.subform2.Setfocus
    DoCmd.GoToControl ("DitFelt2")
End Select
Avatar billede per2edb Praktikant
23. september 2014 - 14:24 #2
Jeg har nok ikke precisseret at det er inden formen er nået.
F.eks er VedÅbning på Main ikke indgangen men VedÅbning i en af subformene,
og så er det jo for sent
Avatar billede fdata Forsker
23. september 2014 - 14:43 #3
Øhm. Dér tabte du mig.
Hvordan kan en subforms åbning komme FØR dens hovedforms åbning?
..og hvad mener du med "...er ikke indgangen"?
Prøv lige at forklare lidt nærmere hvordan dit setup er.
Avatar billede per2edb Praktikant
23. september 2014 - 14:53 #4
Jeg kalder, fra en menu, en form med 5- 6 subforme

Lægger jeg f.eks msgbox("Main") i main ved Åbning, msgbox("Sub1") i Subform1 ved Åbning osv .....
Så er Main ikke den første men måske Sub3
Avatar billede fdata Forsker
23. september 2014 - 15:29 #5
Hm.
Først fyres subformens VedÅbning af - og bagefter hovedformens.
Pudsigt.

Nå, ikke desto mindre fungerer koden, jeg postede.
Prøv at lægge den efter din msgbox("Main") på hovedformen, så kan du se det i funktion.
Avatar billede per2edb Praktikant
23. september 2014 - 15:36 #6
Jeg kender de anviste koder men de hjælper ikke når starten efter kaldet fra menuen ikke er main VedÅben men en VedÅben på en af SubFormene
Avatar billede fdata Forsker
23. september 2014 - 16:42 #7
OK.
Jeg forstår stadig ikke din formulering "når starten efter kaldet fra menuen ikke er main VedÅben men en VedÅben på en af SubFormene".
Betyder det at du kører kode i subformens VedÅbning?

Måske vi skulle vende tilbage til selve problemets kerne.
Du skrev "Har man en kommando der placerer start ...".
Hvad er det, du gerne vil have kode til - helt præcis?

(Det er igen formuleringen "placerer start", der forvirrer)
Avatar billede per2edb Praktikant
23. september 2014 - 16:59 #8
Vi begynder på en frisk og simplificerer det.

Du laver form "Ordre" med 2 subforme Sub1 og sub2

Du kalder DoCmd.OpenForm "Ordre"
I Ordre har du VedÅbning her lægger du en msgbox ("Ordre")
I Sub1 og sub2 gør du det samme med msgbox ("Sub1") og msgbox ("Sub2")

Det skal selvfølgelig være sådan at du først ser Ordre - det er imidlertidig sub1 eller sun2 der kommer først - til sidst Ordre!

Jeg har som beskrevet sat tab til 0 for ordre, 1 og 2 for subberne
Avatar billede terry Ekspert
23. september 2014 - 18:32 #10
As fdata I too find it hard to understand what your trying to do.


So:
If You look at the sequence of events for a from with sub forms you can see that an Activate event occurs ONLY for the main form.

So if you want to run some code when the forms open, put it there.
Avatar billede fdata Forsker
23. september 2014 - 22:49 #11
Whoa. Den er svær denne her.
"Det skal selvfølgelig være sådan at du først ser Ordre".
Hvad mener du med at "du først ser Ordre"? Ser hvor?

Det er stadig ikke helt klart, hvad du mener. Sorry :O(

Kan du ikke forsøge at beskrive helt præcist hvad det er, du forsøger at opnå.
Avatar billede per2edb Praktikant
24. september 2014 - 10:12 #12
Jeg har en form med navnet "Ordre" med
Herpå er placeret 2 subforme Sub1 og sub2

Du kalder nu DoCmd.OpenForm "Ordre"

Jeg skal have placeret koder aller aller aller første sted på Ordre,
altså før Sub1 og sub2

Det skulle forventes at være på main formen Ordre VedÅbning.

Det tester jeg ved at placere msgbox'er i VedÅbning af
Ordre, Sub1 og Sub2. Det er her jeg konstaterer Sub1 kommer først.

Da jeg har 10 scrolsider kode kan det være disse koder der forstyrer et eller andet sted.
Det har jeg konstateret ved debug ikke er tilfældet

Altså jeg skal fra menuen med DoCmd.OpenForm "Ordre" tvangstyre programmet til Ordre main (ikke sub1) og en på Ordre main placeret event
Avatar billede terry Ekspert
24. september 2014 - 10:27 #13
Have you looked at the sequence of events for opening forms with sub forms? Many sub forms events happen BEFORE the main forms events.
Avatar billede per2edb Praktikant
24. september 2014 - 10:39 #14
NEMLIG - DET ER MIT PROBLEM AT SUB KOMMER FØRST
Hvad kan jeg gøre så main kommer først?
Avatar billede terry Ekspert
24. september 2014 - 10:55 #15
Ask Microsoft to change it :-)

If you try telling us what you are trying to do then maybe we can find another solution.
Avatar billede per2edb Praktikant
24. september 2014 - 11:20 #16
På Sub1 sub 2 .... er der Dataark

De startes fra Main og kalder i rækkefølge Sub1 sub2 osv
Det gøres ved i:

I Main Form_Open kaldes Sub1

I sub1 Form_Current

Me.Parent![Ordre_PO_Dataark UFrm].Requery

I sub2 kaldes sub3 osv


Form_Open duer ikke i sub da Me.Parent![Ordre_PO_Dataark UFrm].Requery skal kunne tilgås igen med andre parametre

Måske løsningen er at flytte til en anden event - men hvilken?
Avatar billede terry Ekspert
24. september 2014 - 11:48 #17
That doesn't help, what is the purpose behind all of this?

why do you need to open these sub forms and why do you need to run code when you think you want to ????????
Avatar billede bvirk Guru
24. september 2014 - 22:21 #18
Først lige en tak, per2edb, for alle dine spørgsmål. Du bidrager nok med 1/3 af samtlige her i access, og det er vi glade for, os som svarer.
Når det er sagt, så vover jeg hermed pelsen uden at være sikker på hvad du mener. Databaseprogrammer bruges til at administrere noget jordnært - her ordrer - så hvis man gøre sig forståligt er det et dogme at det altid kan lade sig gøre ved at beskrive anvendelsen.

Hvad kan sige om event der fyrer for tidligt? Den definer sig selv som fejlskud i tidsmæssig henseende og er dermed slet ikke kandidat.

Lad antage at en form 'sub' indeholder en kombinationsboks 'combo' som vi ønsker indledningsvis at tildele værdien 1

'sub' er underformular i form 'main' med kontrolelementnavnet 'subformObj'

Vi ønsker 'main' udfører indledende opsætning før 'sub's 'combo' får tildelt værdi

Form_Main

Private Sub Form_Open(Cancel As Integer)
    MsgBox Me.name & " event open"
    ' main initalisering
    subformObj.Form.Controls("combo") = 1
End Sub

That's it! Drop tidsstartrækkefølgekonkliktende load,open og resize på subforme og lad hovedformen udføre det. (ikke at jeg garanterer noget ;)
Avatar billede fdata Forsker
24. september 2014 - 22:02 #19
Jamen, kan du ikke bare lade være med at placere kode i Subformen, så kommer Main jo automatisk "først".

Hvorfor hoppe ned i Subformen og køre:
  Me.Parent![Ordre_PO_Dataark UFrm].Requery ?

Hvorfor ikke køre den direkte i Main formen:
  Me.[Ordre_PO_Dataark UFrm].Requery ?
Avatar billede per2edb Praktikant
25. september 2014 - 09:01 #20
Både fdata og bvirk har ret mht koderne bør ligge i main.
Mennn... Sådan havde jeg det før men måtte lave det om idet jeg genbruger suberne
på forskellige main. Jeres løsning, som er rigtig, gav en enorm administration i main. Jeg har ca 100 main og sub'er der krydses mellem hinanden

Terry har ret. Som han skriver : Ask Microsoft to change it :-)

Alle har bidraget og har ret. Kan i lave det så i alle kan få point
Avatar billede bvirk Guru
25. september 2014 - 10:35 #21
Umiddelbart, angående kodelinie gentagelse og administration af dem - er der noget i vejen for at have dem liggende i subforme?

form_Main

Private Sub Form_Open(Cancel As Integer)
    MsgBox Me.name & " event open"
    ' do main stuff
    Form_Sub.lateOpen
End Sub

-----------

form_sub

Public Sub lateOpen()
    MsgBox Me.name & " sub() lateOpen"
    'do sub stuff
End Sub
Avatar billede per2edb Praktikant
25. september 2014 - 10:46 #22
Lyder interessant
Hvilken event er det på Dansk - lateOpen ?
Avatar billede bvirk Guru
25. september 2014 - 11:46 #23
Det er ganske almindelig subrutine. Du misforstår mig altid når jeg anvender, efter min overbevisning, retvisende engelske betegnelser ;)
Eller med andre ord, for forståelsen skyld er, er dette det samme som i #21

form_Main

Private Sub Form_Open(Cancel As Integer)
    MsgBox Me.name & " event open"
    ' do main stuff
    Form_Sub.persEgenOpen
End Sub

-----------

Form_sub

Public Sub persEgenOpen()
    MsgBox Me.name & " sub() persEgenOpen"
    'do sub stuff
End Sub

----------
Alle de indbyggede events er med indledende underscore som i _open
Faktisk kan man vist lave sine egne, men det er antager jeg er unødvendigt med mindre man har brug for asynkroniteten.
Avatar billede terry Ekspert
25. september 2014 - 13:08 #24
Ask Microsoft to change it :-)
But there are reasons why events occur in the order they do.


Pity you couldn't explain yourself better, I'm sure a much simpler solution could be found.
Avatar billede terry Ekspert
30. september 2014 - 08:10 #25
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