10. juli 2002 - 12:27Der er
30 kommentarer og 2 løsninger
formular til at udvælge kriterier
I en database har jeg en formulaer til at indtaste data omkring en række medlemmer, bl.a. definere man under indtastningen om medlemmerne er a, b eller c medlemmer. I en anden formular vil jeg så gerne kunne definere om jeg vil sortere efter a,b eller c medlemmer.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
det er nærmere en filtrering jeg har brug for - altså, ekspemelvis skal jeg kunne udskrive labels til alle b-medlemmer uden at medtage andre, det kan jeg godt få til at lykkes, men hvis jeg så ønsker at udskrive både b og c men ikke a-medlemmer så skal det enkelte medlem være registreret som både b og c.
Sub Liste20_AfterUpdate() Dim varItm As Variant Dim strFilter As String
strFilter = "" For Each varItm In Liste20.ItemsSelected strFilter = strFilter & " OR feltnavn = " & Liste20.ItemData(varItm) Next strFilter = Mid(strFilter, 4)
Me.FilterOn = False Me.Filter = strFilter Me.FilterOn = True End Sub
liste20 er en listbox med flermarkering sat til 'Sammensat markering'
kriteriet for hvilke medlemmer der skal udskrives skal kunne vælges af brugeren i en formular kaldet "krit" - og dataene indtastes i en anden formular. Jeg benytter så følgende kode: =(DLookUp("felt";"[tabel]")<>0) til at tjekke om der er valgt en "sand/falsk" knap i begge formularer i det samme felt. Altså er b valgt i begge ? hvis felterne er ligmed hinanden er udtrykket sandt, eksempelvis er -1 = -1.
Men hvis et medlem er medlem af såvel a som b duer denne funktion ikke, da den så også vil have at dine kriterer skal være sat til såvel a som b
faktisk er det blot et eksempel på mit problem, i realiteten er der 15 forskellige medlemsniveauer der derfineres med et niveau 1, ja/nej niveau 2 ja/nej osv.
lav en ny tabel med 2 felter det første skal indeholde alle feltoverskrifterne fra din oprindeligetabel (niveau1......osv) evt i [] det andet felt er dit alias, det der skal stå i listen.
fyld en listbox med de data du nu har indtastet i tabellen sæt flermarkering til 'Sammensat markering' indsæt følgende i en event Private Sub Liste14_Click() Dim varItm As Variant Dim strFilter As String
strFilter = "" For Each varItm In Liste14.ItemsSelected strFilter = strFilter & " OR " & Liste14.ItemData(varItm) & "= true" Next strFilter = Mid(strFilter, 4) DoCmd.OpenReport "dinRapport", acViewPreview
Reports("dinRapport").FilterOn = False Reports("dinRapport").Filter = "" Reports("dinRapport").FilterOn = true End Sub
Private Sub Kommandoknap26_Click() Dim strWhere If alternativ1 Then strWhere = strWhere & " OR [Niveau 1] = true" If alternativ2 Then strWhere = strWhere & " OR [Niveau 2] = true" If alternativ3 Then strWhere = strWhere & " OR [Niveau 3] = true"
strWhere = Mid(strWhere, 4) DoCmd.OpenReport "dinRapport", acPreview, , strWhere end sub
Her er en vist med 3 aternativ knapper og en alm knap til at åbne rapporten. Din rapport skal bygge på en foresp uden kriterier.
jeg tror det kan løses på en anden og bedre måde - hvis ellers du ved en måde til at tjekke på data, det vil sige, "hvis feltet q er = b then add 1 i feltet c" eller noget i den stil
Du har en database med en rapport til etiketter Du har en foresp som rapporten bygger på Du ønsker en form (krit), hvor du kan vælge hvilke poster fra foresp. der skal med i rapporten.
Hvis det er korrekt skal du IKKE tænke på din indtastningsformular - om et medlem er 'a' eller 'b' skulle gerne være gemt i en tabel, og dermed med i førnævnte foresp.
Ja, der er det på sin vis - problemet er bare at det er lidt mere komplekst en som så, og at de omtalte kriterier derfor skal udvælges på en anden måde - faktisk virker det allerede, det eneste problem er i realiteten at jeg har 1 kriterie på hvert felt i forespørgelsen - og skal have lavet så det er nok hvis blot et af felterne stemmer overens med kriteriet - ok ?
ja, men det kan du ikke få til at virke. Så skal du have et hav af kriterier. Uden at være soecialist i statestikberegninger bliver det noget med 14 * 13 * 12 * 11 ******* 1 'OR' dele i dit foresp.gitter.
Det korrekte er enten at opbygge et filter, som jeg har gjort, eller bygge en SQL dynamisk via VBA (meget lig et filter) og anvende rapportens 'RecordSource'
Niels
jeg går ud fra at hvis en person er registreret som både 'a' og 'b' skal han med selvom der KUN søges på 'a'.
da dette spørgsmål efterhånden er drejet over på samme emne som en nyere jeg har oprettet som er mere konkret, tror jeg at det vil være rigtigst at lukke dette - jeg giver dig en spand point for din assistance og tager resten selv det andet spørgsmål holder jeg så åbent
du kan prøve at slette ALLE de kriterier der skal være dynamiske fra din foresp. I din rapport er en egenskab filter, skriv her et kriterie eks a = sand or b = sand (på dansk) så skulle den gerne sortere alt andet fra.
prøver med din løsning lige nu, den med: If Alternativknap1049 Then strWhere = strWhere & " OR [Niveau 3] = true" men det vil ikke rigtigt spille maks!
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.