Jeg har et problem med en formular med underformular på og på underformularen har jeg et problem med at for den til at kun oprette det som jeg indskriver det, men lige så snart der opdateres eller gåes videre til ny post oprettelse, vender alle posterne på underformular sig som det nu behager.
Jeg har forsøgt at fjerne alt filtrering på formular og underformular, dog uden held.
Der er en del opslag på underformular, og jeg tænkte om det måske kan være årsag til at der vendes om på rækkefølge??
Nogen der har en ide til hvad man kan gøre for at man kan beholde den rækkefølge på poster som man indtaster der?
De to formularer skal knyttes sammen via hovedformularens underformularkontrolelement (der indeholder underformularen) og dennes to Data-egenskaber:
- OverordnedeFelter - UnderordnedeFelter
Normalt vil den første indeholde feltet, som er den primære nøgle i hovedformularens datasæt. Den anden vil indeholde feltet i underformularens datasæt, der skal matche hovedformularens primære nøgle.
Formularen Ordre består af hoved formular Ordre og underformular OrdreDetaljer. Hovedformular er oprettet fra tabel, underformular via forspørgsel.
de OverordnedeFelter og underordnedeFelter Har Ordre_Id som er hoved formularens primære nøgle. Ordre_Id indgår også i underformularens forspørgsel.
Håber jeg har forklaret det rigtigt, ellers spørg.
Formularen virker sådan set fint, lige bortset fra den irriterende detalje at den selv vil bestemme hvilken rækkefølge posterne i underformular skal stå.
Jeg bemærkede ved tjek af de over og underordnede felter at der er en "filtrer på tom master", ved ikke helt hvad den gør, men denne står til ja. Bør det ændres?
Der er såvidt ikke sat nogen sortering i underformularens forspørgsel. Kan man bestemme at der ikke skal vises i uforudsigelig orden i posterne på underformularen???
Sorry var lige på en lille efterårs ferie med ungerne.
Nu skriver du som forslag at jeg skal sortere i posterne enten på formular eller forspørgsel.
Nu ville jeg jo helst gerne at der ingen sortering var, således at posterne på underformular forbliver i den rækkefølge som jeg har indtastet dem.
Du skrev tidligere at hvis man ikke angiver en sortering/filter så vises posterne i uforudsigelig orden, kan man ikke angive at access slet ikke skal gøre noget ved indtastning?
Normalt - og især hvis der er få poster - vil Access vise posterne i den rækkefølge, de er tilføjet - der er bare ingen garanti for det, for en database er ikke et regneark.
Så hvis du vil have en garanteret rækkefølge, må du angive den og så sortere efter den. I praksis vil man sætte og bruge et positionsnummer på linjen og så sortere efter det. Det vil også tillade nemt at ændre rækkefølgen, når man lige har glemt en linje.
Nu har jeg kigget på din artikel og prøvet at lege lidt med det, men kan ikke helt få det til at virke, den brokker sig lidt med funktionen RowNumber, som jeg tænkte ville bruge, da jeg tænker at ved at bruge det i en forspørgsel, vil jeg bedre kunne bruge det på rapporter. Men den skriver at funktionen RowNumber ikke er defineret når jeg prøver at kører forspørgsel.
Du skal enten have kopieret og indsat funktionen i et modul eller - måske enklere - importere hele modulet RowEnumeration.bas. Der er også en demo, du kan downloade og eksperimentere med.
Jeg prøvede faktisk noget lign, ved at bruge OrdreDetalje ID Og det virker sådan set fint nok, men tænker det nok ikke er den bedste måde, hvis man sletter eller indsætter poster og Jeg kan egentlig godt lide tanken om RowNumber særlig GroupRowNumber som du viser i OrderDetail query .
Ellers - hvis du i vinduet vil flytte poster op/ned i listen - er det måske RowPriority, du skal kigge på. Den er noget anderledes, og du skal nok starte med demoen for at se den fungere. Men er det, hvad du efterlyser, er den virkelig smart.
I din Demo RowNumbers den nyeste, har du en Query Order Details Row Numbers Hvor du bruger den henne kan jeg ikke se, men grunden til at jeg kigger på den er at den passer meget godt med det jeg skal bruge, da min sub Form netop er lavet på min OrdreDetalje Query og derfra kan jeg jo sortere på mine rapporter ud fra GroupRowNumber.
Som jeg ser det er din demo lavet over tabellen Products og det er en enkelt form. Men jeg har jo en hoved form "Ordre" med en subform "OrdreDetaljer" Og på hoved form har jeg så knapper til at kalde/udskrive forskellige rapporter som Faktura, Følgeseddel og Ordre Bekræftelse og I disse rapporter skulle det gerne stilles op i den række følge som det er tastet ind og det mener jeg godt det kan ved sortering på rapporterne efter GroupRowNumber, Men jeg bøvler som sagt med at få funktionen til at virke, det virker som om den ikke bliver kaldt og nu har jeg prøvet med hele enumkoden i modul. Men jeg har så også opdaget at jeg ikke kan få feltet" RowNumber in på min SubForm, men det skyldes jo nok at funktionen ikke "findes" som Acces hævder
OK. Men det fungerer på helt samme måde med en underformular, dog skal du naturligvis bruge underformularens recordset, og det er heri, RowNumber skal bruges i et udtryk.
Men tror dog at jeg har fået løst problemet, det ser ihvertfald fint ud forløbig. Men kom gerne med bemærkning hvis du mener det kan få konsekvens på en eller anden måde.
Jeg brugte DCount i de relevante forspørgelser, sådan her:
NR: IIf(IsNull([Ordre_Detalje_ID]);Null;Nz(DCount("Ordre_Detalje_ID";"OrdreDetaljerT";"OrdreDetaljerT.Ordre_ID=" & [OrdreDetaljerT].[Ordre_ID] & " AND Ordre_Detalje_ID<" & [Ordre_Detalje_ID]);0)+1)
Og så sortere jeg bare efter NR i de relevante rapporter.
spm skal jeg indsætte .refresh eller requery ved delete eller indsættelse på form?
Det er da fint, hvis det virker. Fidusen med RowNumber er, at den cacher data, så den kun behøver læse recordsettet én gang, men hvis du kun har få poster, gør det næppe nogen synlig forskel. En test vil hurtigt afsløre, om du behøver at genforespørge.
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.