28. oktober 2010 - 16:01Der er
15 kommentarer og 1 løsning
Åbne ny formular med parametre fra formular og subformular
På min formular viser jeg personoplysninger, og i subformularen viser jeg udstyr, der tilhører den aktuelle person.
Med en knap kan jeg åbne en ny formular, hvor godkendelsescertifikat på udstyret vises som et billed.
Det virker upåklageligt indtil der er flere stykker udstyr i subformularen der er certificat på. Selvom man stiller sig på det stykke udstyr i undeformularen man gerne vil se certifikat på, åbner den ny formular med det første stykke udstyr med certifikat fra underformularen.
Jeg giver den ny formular værdien fra feltet Initialer på Hovedformularen, og det virker jo fint nok. Men spørgsmålet er så hvordan får jeg meddelt min ny formular, at den skal finde det certifikat, der hører til den aktive record i subformularen?
Jeg har forsøgt med følgende men uden held:
SELECT t_Person.Initialer, t_Person.FNavn, t_Person.ENavn, t_Cert.Filsti, t_Cert.Certnavn, t_Cert.CertNr FROM (t_Person INNER JOIN t_Udstyr ON t_Person.Initialer=t_Udstyr.Ejer) INNER JOIN t_Cert ON t_Udstyr.Identitet=t_Cert.Udstyr WHERE (((t_Person.Initialer)=forms!Form_VisPerson!Initialer) AND ((t_Cert.Filsti)=forms!Form_VisUdstyrUnderformular!Filsti));
Det er klausulen efter AND med Filsti fra VisUdstyrUnderformular, der går galt. Den bliver ikke fundet (pop-up med "enter parameter value") Filsti er en skjult textbox på VisUdstyrUnderformular. Er det derfor det går galt eller er det syntaxen eller er der en anden måde at fortælle den ny formular, hvilket certifikat den skal vise?
Desværre Neoman, den giver stdig pop-up med enter parameter value
både med og uden det sidste Form! i dit forslag.
SELECT t_Person.Initialer, t_Person.FNavn, t_Person.ENavn, t_Cert.Filsti, t_Cert.Certnavn, t_Cert.CertNr FROM (t_Person INNER JOIN t_Udstyr ON t_Person.Initialer=t_Udstyr.Ejer) INNER JOIN t_Cert ON t_Udstyr.Identitet=t_Cert.Udstyr WHERE (((t_Person.Initialer)=forms!Form_VisPerson!Initialer) AND ((t_Cert.Filsti)=forms!Form_VisPerson!Form_VisUdstyrUnderformular!Form!Filsti));
Når du er i Query Designeren i det felt hvor Forms!Form_VisPerson .... skal stå, højreklik og klik på Build. Naviger til Open Forms, derigennem til underformularen, vælg Fields øverst på listen og her vælg så det pågældende felt med værdien. Klik Paste .. så er vi sikre på at referencen er bygget op korrekt (jeg har engelsk access, så der er tilsvarende betegnelser i den danske)
Ja, kommer til Form_VisPerson. Når jeg åbner den sker der ikke en s... de to næste kolonner er blanke.
Synes godt om
Slettet bruger
30. oktober 2010 - 09:49#8
Din intension - at basere en forespørsel på aktuelle værdier i en åben formular - den burde virke! Prøv at lave forespørgslen selvstændigt og se om den virker når du skifter person i formularen Prøv at sætte breakpoint i certifikat formularens aktuel event og hente fra person formularens felter i vba editorens immediate vindue.
Kan iøvrigt laves på en helt anden måde - ved brug openargs og lidt kode.
Vis certifikat formen bliver dannet af en forespørgsel.
Forespørgslen giver jeg personID fra hovedformen.
Det virker fint. den viser den første record fra subformen med det rigtige ID fra hovedformen.
Nu vil jeg gerne have den til at vise den record fra subformen som man stiller sig på ved at klikke på linien i subformen. Her er det så at (t_Cert.Filsti)=forms!Form_VisPerson!Form_VisUdstyrUnderformular!Form!Filsti) ikke virker. Det ser ud til at enten kan forespørgslen ikke se værdien Filsti på subformen eller også er der noget galt med syntaxen.
Jeg kan ikke lige greje det.
Synes godt om
Slettet bruger
04. november 2010 - 07:29#10
punktum (.) og ikke udråbstegn (!) for at referere til 'instans medlemmer' som en forms controls - altså Form_VisPerson.Form_VisUdstyrUnderformular
Forstår ikke hvorpå person indgår i forespørsel - certificat er vel blot noget der er på noget udstyr - anyway det er adgang til 'valgte records poster' der er fokus her:
Givet: Tabel Cert med felterne: filsti og udstyrsId. UdstursId er relateret til feltet id i den tabel der vises i Form_VisUdstyrUnderformular
En sjov, ellers ligegyldig feature, er at man kan vise værdien af et udtryk i en forespørgsel - så, hvis Personformularen er åben og fokus placeret på et stykke udstyr, så vil følgende forespørsel visse dens udstyrside:
"punktum (.) og ikke udråbstegn (!) for at referere til 'instans medlemmer' som en forms controls - altså Form_VisPerson.Form_VisUdstyrUnderformular"
Er afprøvet - gør ingen forskel
"Forstår ikke hvorpå person indgår i forespørsel - certificat er vel blot noget der er på noget udstyr - anyway det er adgang til 'valgte records poster' der er fokus her:"
Udstyr er som regel ejet af en person. Derfor præsenteres udstyr per person på form_VisPerson
"Givet: Tabel Cert med felterne: filsti og udstyrsId. UdstursId er relateret til feltet id i den tabel der vises i Form_VisUdstyrUnderformular"
korrekt - dog er det baseret på en forespørgsel, der henter data fra flere tabeller.
"En sjov, ellers ligegyldig feature, er at man kan vise værdien af et udtryk i en forespørgsel - så, hvis Personformularen er åben og fokus placeret på et stykke udstyr, så vil følgende forespørsel visse dens udstyrside"
Er ikke helt med på hvorfra den forespørgsel skal afvikles. Den smider bare "enter parameter value" pop-ups i hovedet på mig. og fodrer jeg dem med det korrekte ID får jeg hele t_Cert tabellen som resultat.
Synes godt om
Slettet bruger
04. november 2010 - 14:09#12
'Er ikke helt med på hvorfra den forespørgsel skal afvikles. Den smider bare "enter parameter value" pop-ups i hovedet på mig. og fodrer jeg dem med det korrekte ID får jeg hele t_Cert tabellen som resultat.'
forespørgslen er bare for at se om der er 'hul igennem'
Hvorfor har du valgt filsti både som felt i den tabel (eller forespørgsel) der er datakilde for underformularen udstyr og tabelen t_cert ?
"Hvorfor har du valgt filsti både som felt i den tabel (eller forespørgsel) der er datakilde for underformularen udstyr og tabelen t_cert ?"
For at kunne finde billedet af certifikatet må man nødvendigvis have linket i tabellen. Jeg har feltet med på underformularen for at kunne bruge det som parameter til at åbne formularen VisCert (ved hjælp af en forespørgsel)
Har fundet en anden løsning på nettet som egentlig er meget elegant.
Buger dbklik event på det første felt i undeformularen til at åbne Form_Certbilled med- istedet for knappen. Jeg giver den en variabel som jeg tildeler værdien fra feltet Filsti på underformularen
Private Sub Identitet_DblClick(Cancel As Integer) Dim sWHERE As String sWHERE = "[Filsti] = '" & Me.Filsti & "'" DoCmd.OpenForm "Form_CertBilled", acNormal, , sWHERE End Sub
virker upåklageligt.
Kan stadig ikke forstå hvorfor jag ikke kan sende værdien med som parameter fra underformularen. men vil gerne give neoman de 60 point, hvis han vil smide et svar, da det efter min bedste overbevisning burde virke med at referere til filsti med Forms!Formularnavn.Subform.Form.Feltnavn
Ok neoman, det er dit valg. Men jeg mener nu stadig at din løsning burde virke. Det er også den metode jeg har set foreslået flere andre steder på nettet. Men hvorfor den ikke virker på mine formularer kan jeg desværre ikke gennemskue.
Jeg takker dog mange gange for hjælpen - også til ellebe.
mvh Henrik
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.