Avatar billede runeklausen2 Nybegynder
13. september 2005 - 23:31 Der er 13 kommentarer og
1 løsning

query i rapport? (forsættelse af if sætninger i rapporter)

Hvis jeg prøver at laver en query i rapport'en med inner joins så access at det ikke er tilladt, men hvordan får jeg så fat i mine data.

Hvis jeg f.eks. har en liste over alle mine solgte ting (inkl hvilken faktura de høre til), men i detalje sektionen vil jeg ha' den nyeste faktura makeret med grå farve.

farven laves sådan her:
If IsNull(Me!nyesteFaktura) Then
  Me!Fnr.BackColor = vbYellow
  Me!Fnr.BackStyle = 1 'Normal
Else
  Me!Fnr.BackColor = vbWhite
  Me!Fnr.BackStyle = 0 'Gennemsigtig
End If

Men hvordan finder jeg den nyeste faktura og fortæller at den skal farveligge?
Avatar billede mugs Novice
14. september 2005 - 07:47 #1
Jeg antager, at dine fakturaer er fortløbende nummereret således, at den nyeste faktura har det højeste nr.

Du kan så oprette en variabel (VARa) der ved hjælp af DMax funktionen finder det højeste fakturanr i tabellen. Derefter en docmd.find der finder fakturanr = din variabel.

If Me!nyesteFaktura = VARa Then
  Me!Fnr.BackColor = vbYellow
  Me!Fnr.BackStyle = 1 'Normal
Else
  Me!Fnr.BackColor = vbWhite
  Me!Fnr.BackStyle = 0 'Gennemsigtig
End If
Avatar billede mugs Novice
14. september 2005 - 07:52 #2
Du kan evt. finde det højeste fakturanr således:

Me!nyesteFaktura = DMax("[Fakturanr]", "[TABELNAVN]")

Og den færdige kode vil se således ud:

Me!nyesteFaktura = DMax("[Fakturanr]", "[TABELNAVN]")
If Me!nyesteFaktura = VARa Then
  Me!Fnr.BackColor = vbYellow
  Me!Fnr.BackStyle = 1 'Normal
Else
  Me!Fnr.BackColor = vbWhite
  Me!Fnr.BackStyle = 0 'Gennemsigtig
End If

Nb.:  Ikke afprøvet.
Avatar billede runeklausen2 Nybegynder
14. september 2005 - 18:24 #3
Hvor indsætter jeg koden?
Det virker ikke at indsætte den under formatering af rapport
Avatar billede mugs Novice
14. september 2005 - 20:13 #4
VedUdskrivning
Avatar billede runeklausen2 Nybegynder
14. september 2005 - 21:27 #5
pokker ta' det, det fungere ikke på forspørgelser?

nu er det sådan at jeg gerne vil lave en liste til hver kunde med hvad de har købt, og dvs. at det er den nyeste faktura for hver kunde som skal være grå på den liste jeg printer til kunden.

f.eks.
kunde1
dimsedut 39,95 faktura: 10
dimsedut 39,95 faktura: 10
dimsedut 39,95 faktura: 10
dimsedut 39,95 faktura: 12
dimsedut 39,95 faktura: 12
Hat 79,95 faktura: 15 <-- Grå

Kunde2
Legetøj 87,50 faktura: 11
Legetøj 285,50 faktura: 11
Emballage 399,00 faktura: 13
Gødning 295,95 faktura: 14 <-- grå
Hat 79,95 faktura: 14 <-- grå

Vi snakker her 2 forskellige udprint, derfor jeg gerne ville lave det med forspøgsel, som viser hvad kunde har købt og hvilke fakturaer som høre til, og så "markere" hans sidste nye faktura
Avatar billede mugs Novice
14. september 2005 - 21:31 #6
Du kan ikke formatere en forespørgsel på den måde, at du kan farvelægge bestemte poster. Det er du nødt til at gøre med en betinget formatering eller med en VBA-kode.
Avatar billede runeklausen2 Nybegynder
14. september 2005 - 21:38 #7
jeg har lavet en forspørgsel som vælger alle de ting han har købt, som jeg bruger til den her rapport, så jeg tænkte at jeg ville bruge den til at smide ind i DMAX funktionen, men den gik desværre ikke.
Avatar billede runeklausen2 Nybegynder
14. september 2005 - 21:41 #8
og den her går heller ikke:

private Sub Detaljesektion_Print(Cancel As Integer, PrintCount As Integer)
Dim test As Integer

Set dB = CurrentDb
Set rs = dB.OpenRecordset("SELECT MAX(eksponeringer.fakturanr) AS test FROM (kunder INNER JOIN brands ON kunder.kundenummer = '" & Me.kundenummer & "') INNER JOIN eksponeringer ON brands.id = eksponeringer.brandid")

Så jeg er lidt på bar bund.
Avatar billede mugs Novice
14. september 2005 - 21:44 #9
Nu glimrer dine kommentarer sig jo ved ikke at forklare nærmere:

- Får du nogen fejlmelding?
- Sker der bare ikke noget?
- Når du bruger en funktion i SQL skal separatortegnene , (komma) usskiftes med semikolon:

DMax("[Fakturanr]"; "[TABELNAVN]")
Avatar billede runeklausen2 Nybegynder
14. september 2005 - 21:53 #10
test = DMax("[fakturanr]"; "[EksponeringslisterFilter]") <-- Compiler Error: Expected: list seperator or )

test = DMax("[fakturanr]", "[EksponeringslisterFilter]") <--Run-time error '2001': Du har annulleret den forrige handling.

SQL sætningen siger at jeg ikke må laver inner joins
Avatar billede mugs Novice
15. september 2005 - 09:01 #11
Som postkilde i f.eks et ubundet felt:

=DMax("[fakturanr]";"Eksponeringsfilter")

I VBA:

MsgBox DMax("[fakturanr]","Eksponeringsfilter")

Fejlen i din SQL sætning skal fejlrettes i SQL og har intet med DMax at gøre.
Avatar billede kjulius Novice
18. september 2005 - 00:29 #12
I din forespørgsel kunne du indsætte en MAX(fakturanr):

SELECT k.kundenr, k.kundenavn, k.kundeadresse, k.kundeby,
      oh.fakturanr
      ol.varenr
Avatar billede kjulius Novice
18. september 2005 - 00:47 #13
Oops, der fik jeg trykket på send lidt for tidligt, sorry...

I din forespørgsel kunne du indsætte en MAX(fakturanr):

SELECT ol.varenr, v.varetekst, ol.salgspris, tmp.*, oh.fakturanr
FROM Ordrelinier ol
INNER JOIN Varer v
  ON ol.varenr = v.varenr
INNER JOIN Ordrehoveder oh
  ON ol.ordrenr = oh.ordrenr
INNER JOIN (
SELECT k.kundenr, k.kundenavn, k.kundeadresse, k.kundeby,
      MAX(oh.fakturanr) AS SidsteFakturanr
FROM Kunder k
INNER JOIN Ordrehoveder oh
  ON k.kundenr = oh.kundenr
GROUP BY k.kundenr, k.kundenavn, k.kundeadresse, k.kundeby
) AS tmp
ON oh.Kundenr = tmp.Kundenr
ORDER BY oh.kundenr, v.varetekst

Så kunne du jo sætte farven til grå, ligesom du før gjorde med den gule. Du skulle bare sammenligne fakturanr med SidsteFakturanr i stedet.
Avatar billede runeklausen2 Nybegynder
18. september 2005 - 14:37 #14
Sorry jeg har været lidt langsom på den her, jeg skal nok få tjekket op på den mandag :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester