Jeg har en har taget en værdi fra et felt (ansvar) i en formular. Denne værdi vil jeg have sat ind som et kriterie i en forespørgsel (i feltet navn), således at der kun vises poster der opfylder dette kriterie.
Open the form and then in the query place the mouse in the criteria field for the field (navn). Now right click on the mouse to open the menu. Now from the menu choose "bUild" to open th expression builder. Now open the forms+loaded form. Find the form and then the field you want to use in the criteria and double click on it so that you you get something like this in the top text field. Forms![NameOfForm]![ansvar]
Jeg er ved at lave et lille program der skal sende en rapport til nogle brugere. Rapporten skal kun indeholde poster der vedrører dem selv. Derfor har jeg tænkt mig følgende:
Brugerne er defineret i en tabel der hedder Ansvar. Her har jeg bl.a. felterne ansvar og email Rapporten baseres på en forespørgsel der hedder Opfølgning Jeg har en formular baseret på tabellen Ansvar. Programkoden består af følgende: 1. jeg åbner formularen ansvar og går til første post. Tager værdien fra feltet ansvar og gemmer i en variabel. Tager værdien fra feltet email og gemmer i en variabel. 2. jeg åbner forespørgslen Opfølgning i designvisning. Indholdet i variablen med værdien fra feltet ansvar vil jeg indsætte som et kriterie i forespørgslen og derefter gemme forespørgslen. 3. jeg åbner rapporten der nu kun viser poster til een person og sender den til den der står i variablen med indholdet fra feltet email. 4. jeg går tilbage til formularen ansvar og går til næste post og løber så igennem punkt 2 og 3 igen. Det gør jeg indtil der ikke er flere poster.
Men jeg kan ikke finde ud af at indsætte kriteriet i forespørgslen.
Jeg plejer at bruge denne kode til at skabe kriteriebestemte forespoergsler: Koden saettes f.eks paa en knap i formularen
dim strsql as string dim dbs as database dim qdf as querydef dim MinVaerdi as text/integer/double - afhaengingt af hvilken type du har i din formular. set dbs = currentdb
minvaerdi = me.DitFelt
strsql = "SELECT * FROM DinTabel WHERE Ditfelt =" & minvaerdi
set qdf = dbs.CreateQuerydef ("NavnPaaForespoergsel", strsql)
'Hermed er forspoergslen skabt - hvi du kun skal vise data midelrtidigt og ikke oensker at gemme forespoergslen hver gang (hvorefter denne kode vil give fejl da queryen allerede eksisterer) kan du slette den igen:
Lad din formular opdatere en tabel med én record og ét felt, Som nu kommer til at indeholde "Ansvar". Join denne tabel med din forspøgsel, og join naturligvis til "Ansvar". Du kan lave det hele, så det kører i et hug. Lav en formular, hvor du kan finde den ansvarlige. lav en knap "Søg", som dels gemmer den ansvarlige i den lille tabel og som kører den joinede forespørgsel. Så skal man blot finde sit navn og trykke på knappen, så kommer listen ud.
Tak for hjælp og inspiration. Jeg har fordelt pointene mellem jer. Den løsning jeg fandt frem til (som virker) ser således ud: Private Sub SendOpfMed_Click() On Error GoTo Err_SendOpfMed_Click
Dim opfnavn As String Dim stDocName As String
stDocName = "Opfølgning"
DoCmd.OpenForm "formansvar"
Do Until Forms!formansvar!ANSVAR = "" Or IsNull(Forms!formansvar!ANSVAR) DoCmd.GoToControl "ansvar" opfnavn = Forms!formansvar!ANSVAR DoCmd.OpenReport stDocName, acViewPreview, , "ANSVAR!ANSVARnavn = Forms!formansvar!ANSVAR", acHidden If Reports!opfølgning.HasData Then DoCmd.SendObject acReport, stDocName, "RichTextFormat(*.rtf)", Forms!formansvar!email, , , "Opfølgning på kursusaktiviteter", "Vedhæftet en oversigt over de aktiviteter du skal følge op på i henhold til registreringer i kursussystemet", False, "" End If DoCmd.Close acReport, stDocName opfnavn = "" DoCmd.OpenForm "formansvar" DoCmd.GoToRecord , "", acNext Loop MsgBox "meddeleser er sendt"
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.