Avatar billede jasman Nybegynder
22. oktober 2003 - 23:52 Der er 18 kommentarer og
1 løsning

Form med underformularer i 2 niveauer

Hejsa,

jeg har lavet en formular, hvori jeg har en underformular som vises som en fortløbende formular.

Problemet er nu, at jeg gerne vil have yderligere en underformular, men denne underformular skal være synkroniseret med den første underformular.

Altså:
En form med FIRMA-oplysninger har en
underformular med FIRMAETS kontaktpersoner, og i en
underformular mere skal der vises hvilke produkter firmaets kontaktpersoner er interesserede i.

Man kan jo ikke lave en underformular til en underformular, hvis den første underformular er en fortløbende formular, men det skal den være.

Jeg har så prøvet et forske i om man kan synkronisere den nederste underformular med kode, men jeg kan ikke rigtigt finde en løsning.

Har nogen af I eksperter en god ide ???
Avatar billede henrik13 Nybegynder
23. oktober 2003 - 00:20 #1
Jeg har tenkt lidt over det og har nogle ider, jeg gerne selv vil afprøve. Er det sådan at man kan få databasen tilsendt. Mon  E-mail er:
oz1bua@wanadoo.dk
Mvh Henrik13
Avatar billede fynbohans Nybegynder
23. oktober 2003 - 00:23 #2
Hvorfor bruger du ikke lister i stedet for underformularer.
De er meget nemme at synkronisere.
Rsultatet af den liste bruges som betingelse i den anden.
Avatar billede fynbohans Nybegynder
23. oktober 2003 - 00:24 #3
...det sidste skal være resultatet af den første liste ....
Avatar billede larsjordan Nybegynder
23. oktober 2003 - 04:02 #4
Jeg antager lige at den hoved formularen hedder formular1, underformular1 og underformular2. Desuden antages at underformularenes navne når de er placeret på formular1 også er underformular1 og underformular2.
Endvidere antages at tabellen med interesserede produkter hedder produktinteresser, og at kontaktpersoner og produktinteresser er linket sammen via et felt kaldet kontaktpersonID.
Hvis du i den første underformular laver følgende kode ved hændelsen VedAktuel

Private Sub Form_Current()
    Forms![formular1]![underformular2].Form.recordsource = "SELECT * FROM Produktinteresser WHERE KontaktpersonID = " & nz(me!kontaktpersonID,0)
end sub
Avatar billede terry Ekspert
23. oktober 2003 - 18:49 #5
another solution is to have a button on the detail section which opens the "produkter" form. When you place a button on the detail section there will be one for each record.

You can use the button wizard to place the button on the form, and here you will be able to choose to show only records for the specific "kontaktperson" when the form gets opened.
Avatar billede terry Ekspert
23. oktober 2003 - 20:24 #6
jasman>If you dont comment and just reject answers then you cant expect to get much help!
Avatar billede jasman Nybegynder
23. oktober 2003 - 20:40 #7
Jeg var ved at skrive en kommentar, men så kom jeg lige fra det igen.
Jeg beklager.

Det er et krav at underformularerne er fortløbende formularer.
Avatar billede jasman Nybegynder
23. oktober 2003 - 20:40 #8
Og jeg vil have begge underformularer på samme skærmbillede, da det giver overblik.
Avatar billede jasman Nybegynder
23. oktober 2003 - 20:44 #9
Jeg har fundet ud af at underformular nummer to (den med produktinteresser) ikke er en underformular alligevel - men en (form for nestet) formular.
Den kan ikke være en underformular, da den ikke har reference til den øvre postkilde (Firma), men kun til kontaktpersonerne (underformular 1) under firmaet.
Avatar billede jasman Nybegynder
23. oktober 2003 - 20:46 #10
Hvorledes refererer man til en formular (altså IKKE en underformular) som er indsat i anden formular. Kan man det ?
Avatar billede terry Ekspert
23. oktober 2003 - 21:09 #11
the answer larsjordan has given is VERY close to what you need.

Normally a sub form is linked to the parent (main) form through the linked fields (primary key/foreign key). When you move through the records on the main form the related records in the sub form are shown.

Because you want another sub form which is related to a single record in the first sub form, then they can NOT be linked using the linked fields so itis necessary to do this in code which is what larsjordan's answer should do.

When you move through the records on the first sub form (Kontaktperson) an event (on current) is fired and now you can use the primary key (KontaktpersonID) from this record to "filter" the records in the second sub form.

This is what this piece of code does. But it will need modifying to suit the names of YOUR forms.
An explanation to what this code contains.
Forms![formular1]![underformular2].Form.recordsource = "SELECT * FROM Produktinteresser WHERE KontaktpersonID = " & nz(me!kontaktpersonID,0)


Forms![formular1] > The main form. Change formular1 to the name of the main form.

[underformular2] > This is the object containing the sub form. It will VERY likely have the same name as the sub form but this is NOT necessary. Anyway you need to alter this to the correct name. (This is the second sub form)

Form > This is the actual form in the "sub form" object mentioned previously. You dont need to change this!

recordsource > This is the record source property for the sub form. This is what decides which records are displayed in the sub form.

The actual record source gets set to the following.
SELECT * FROM Produktinteresser WHERE KontaktpersonID = " & nz(me!kontaktpersonID,0)

What is important here is the part following the WHERE.

>>> KontaktpersonID = " & nz(me!kontaktpersonID,0)

This is now selecting ONLY the records which are related to the chosen record on the first sub form.
me!kontaktpersonID > the primary key of the selected record
Avatar billede terry Ekspert
23. oktober 2003 - 21:10 #12
I will take a look for you if you send your db to me?

NOSPAMeksperten@santhell.dkNOSPAM

you need to remove NOSPAM
Avatar billede jasman Nybegynder
23. oktober 2003 - 21:30 #13
Hej Terry,

er sendt.
Avatar billede terry Ekspert
24. oktober 2003 - 12:02 #14
Sorrry, didnt see that you had sent me it. I'll take a look when I get home from work if thats OK!
Avatar billede jasman Nybegynder
24. oktober 2003 - 18:07 #15
Helt ok. :)
Avatar billede terry Ekspert
25. oktober 2003 - 11:41 #16
solution is VERY similar to larsjordan's.
When the form/sub forms first gets opened and error will occur because you can NOT reference an object (recordsource) on a form which isnt opened.
So by trapping the error (ON ERROR GOTO...) we get around this.
Avatar billede jasman Nybegynder
25. oktober 2003 - 14:10 #17
Perfection !!!

Det var lige sådan det skulle virke.
Mange tak for hjælpen Terry.
Hvis du nogensinde støder i problemer med Navision XAL, Navision C5 eller Navision Axapta, så skal du bare sige til !!!!
Så kan jeg muligvis hjælpe :).
Avatar billede terry Ekspert
25. oktober 2003 - 14:30 #18
thanks>
Isnt it Microsoft Axapta now?
Avatar billede jasman Nybegynder
25. oktober 2003 - 17:01 #19
Nåeh joh.
Gammel vane !
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