13. januar 2005 - 09:08
Der er
5 kommentarer og 1 løsning
Loop Top10
Nedenstående programkode generer en TOP10 over det akkumulerede salg, hhv. budget pr. måned for delproduktet "PP" …. dette forløber problemfrit, men der er p.t. 17 delprodukter ( slutbruger definerer selv antal/navngivning af disse ), som skal genereres. Det må kunne styres vha. For … next eller Loop, men hvordan ? strSQL = "INSERT INTO tblTOP10_Grundlag_Produktniveau " strSQL = strSQL & "( [Firma id], " strSQL = strSQL & "[Måned], " strSQL = strSQL & "Delprodukt, " strSQL = strSQL & "[AKK Salg kr], " strSQL = strSQL & "[AKK Budget kr], " strSQL = strSQL & "KundeType ) " strSQL = strSQL & "SELECT TOP 10 Indeværende_år.[Firma id], " strSQL = strSQL & "(" & Me![AARMD] & ") AS [Måned], " strSQL = strSQL & "Indeværende_år.Områdenr, " strSQL = strSQL & "tblDelprodukter.Delprodukt_tekst, " strSQL = strSQL & "Sum(Indeværende_år.[Salg kr]) AS [Akk Salg kr], " strSQL = strSQL & "Sum(Indeværende_år.[Budget kr]) AS [Akk Budget kr], " strSQL = strSQL & """A"" AS KundeType " strSQL = strSQL & "FROM Indeværende_år " strSQL = strSQL & "INNER JOIN (tblDelprodukter " strSQL = strSQL & "INNER JOIN tblProdukter " strSQL = strSQL & "ON (tblDelprodukter.Delprodukt = tblProdukter.Delprodukt) " strSQL = strSQL & "AND (tblDelprodukter.Delprodukt = tblProdukter.Delprodukt)) " strSQL = strSQL & "ON (Indeværende_år.Delproduktnr = tblProdukter.Delproduktnr) " strSQL = strSQL & "AND (Indeværende_år.Produktnr = tblProdukter.Produktnr) " strSQL = strSQL & "AND (Indeværende_år.Områdenr = tblProdukter.Områdenr)" strSQL = strSQL & "WHERE (((Indeværende_år.Måned) In (" & Me![InMd] & "))) " strSQL = strSQL & "And (((Indeværende_år.[Firma branchekode Primær])=1)) " strSQL = strSQL & "GROUP BY Indeværende_år.[Firma id], " strSQL = strSQL & "Indeværende_år.[Firma Navn], " strSQL = strSQL & "Indeværende_år.Områdenr, " strSQL = strSQL & "tblDelprodukter.Delprodukt, " strSQL = strSQL & "tblDelprodukter.Delprodukt_tekst, " strSQL = strSQL & " ""A"" " strSQL = strSQL & "HAVING (((tblDelprodukter.Delprodukt) = ""PP"")) " strSQL = strSQL & "ORDER BY Sum(Indeværende_år.[Salg kr]) DESC;" db.Execute strSQL Delproduktvalg styres af næstsidste programlinie : strSQL = strSQL & "HAVING (((tblDelprodukter.Delprodukt) = ""PP"")) " Delproduktet forefindes i en tabel, som foruden navngivningen indeholder en numerisk værdi, som fortæller noget om, hvor delproduktet skal optræde på rapporter, altså en linienummerering, som kan benyttes som en form for counter. Can anyone help me ???
Annonceindlæg tema
13. januar 2005 - 09:51
#1
Bare et lille forslag (en stor del af det første, er det samme som ovenfor): strSQL = "INSERT INTO tblTOP10_Grundlag_Produktniveau " strSQL = strSQL & "( [Firma id], " strSQL = strSQL & "[Måned], " strSQL = strSQL & "Delprodukt, " strSQL = strSQL & "[AKK Salg kr], " strSQL = strSQL & "[AKK Budget kr], " strSQL = strSQL & "KundeType ) " strSQL = strSQL & "SELECT TOP 10 Indeværende_år.[Firma id], " strSQL = strSQL & "(" & Me![AARMD] & ") AS [Måned], " strSQL = strSQL & "Indeværende_år.Områdenr, " strSQL = strSQL & "tblDelprodukter.Delprodukt_tekst, " strSQL = strSQL & "Sum(Indeværende_år.[Salg kr]) AS [Akk Salg kr], " strSQL = strSQL & "Sum(Indeværende_år.[Budget kr]) AS [Akk Budget kr], " strSQL = strSQL & """A"" AS KundeType " strSQL = strSQL & "FROM Indeværende_år " strSQL = strSQL & "INNER JOIN (tblDelprodukter " strSQL = strSQL & "INNER JOIN tblProdukter " strSQL = strSQL & "ON (tblDelprodukter.Delprodukt = tblProdukter.Delprodukt) " strSQL = strSQL & "AND (tblDelprodukter.Delprodukt = tblProdukter.Delprodukt)) " strSQL = strSQL & "ON (Indeværende_år.Delproduktnr = tblProdukter.Delproduktnr) " strSQL = strSQL & "AND (Indeværende_år.Produktnr = tblProdukter.Produktnr) " strSQL = strSQL & "AND (Indeværende_år.Områdenr = tblProdukter.Områdenr)" strSQL = strSQL & "WHERE (((Indeværende_år.Måned) In (" & Me![InMd] & "))) " strSQL = strSQL & "And (((Indeværende_år.[Firma branchekode Primær])=1)) " strSQL = strSQL & "GROUP BY Indeværende_år.[Firma id], " strSQL = strSQL & "Indeværende_år.[Firma Navn], " strSQL = strSQL & "Indeværende_år.Områdenr, " strSQL = strSQL & "tblDelprodukter.Delprodukt, " strSQL = strSQL & "tblDelprodukter.Delprodukt_tekst, " strSQL = strSQL & " ""A"" " strSQL2 = "ORDER BY Sum(Indeværende_år.[Salg kr]) DESC;" Set db = CurrentDb Set rstDelproduktTabel = db.OpenRecordset("DelproduktTabel", dbOpenDynaset) Do Until rstParameter1.EOF strSQL1 = "HAVING (((tblDelprodukter.Delprodukt) = """ & rstDelproduktTabel!Produktnavn & """)) " strSQL3 = strSQL & strSQL1 & strSQL2 db.Execute strSQL3 rstDelproduktTabel.MoveNext Loop
13. januar 2005 - 09:59
#2
Så er det jo i øvrigt god skik at starte med Dim db As Database Dim rstDelproduktTabel As Recordset og vistnok også at slutte med noget i retning af rstDelproduktTabel.Close db.Close
13. januar 2005 - 10:21
#3
Den fejler ved db.Execute strSQL3 Set rstDelProduktTabel = db.OpenRecordset("tblDelprodukter", dbOpenDynaset) Do Until rstDelProduktTabel.EOF strSQL1 = "HAVING (((tblDelprodukter.Delprodukt) = """ & rstDelProduktTabel!Delprodukt & """)) " strSQL3 = strSQL & strSQL1 & strSQL2 db.Execute strSQL3 rstDelProduktTabel.MoveNext Loop
13. januar 2005 - 10:57
#4
Ups .... :o) havde overset justeringen i fbm. strSQL2
13. januar 2005 - 11:00
#5
Kanon ... det virker ... :o) Læg venligst svar, og få dine velfortjente point
13. januar 2005 - 11:03
#6
Var lige ude og rende, men du klarede så problemerne selv :0)
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser