22. oktober 2003 - 23:52Der 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.
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
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
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.
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
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.
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.
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.
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
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.
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 :).
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.