Door de records heen loopen in rapport

Status
Niet open voor verdere reacties.

DaFuzz

Gebruiker
Lid geworden
12 dec 2013
Berichten
27
Goedemiddag dames en heren

Ik zit momenteel met een probleempje met een rapportage.
Het is ongetwijfeld erg simpel, maar na 4 dagen zoeken op internet en uitproberen geef ik het nu toch echt op.

Ik heb een rapportage met 4 kolommen.
Deze 4 kolommen zijn gebaseerd op 1 enkele sessie en 1 sessie bestaat uit 4 records

Gedeelte van de Query
Totaalsessie2..JPG

In onderstaande printscreen is te zien hoe de rapportage alle 4 kolommen vult met 1 enkel record.
Mijn bedoeling is dat de rapportage aan het eind van een record doorloopt naar de volgende record, totdat alle records in een sessie gebruikt zijn

TotaalSessie.JPG

De query doet het prima, maar op de rapportage krijg ik de kolommen naast elkaar net zo dat ze doorlopen
Heeft iemand enig idee hoe ik dit voor elkaar kan boksen?

Alvast bedankt
 
Had je de vraag maar eerder gesteld, dan had je niet zo lang hoeven te zoeken. Gebruik je een kruistabel? Dan rij en kolomveld omwisselen. Nee? Maak er een kruistabel van.
 
Kruistabellen?

Hoi Octafish.

Sorry voor de late reactie, maar helaas loop ik nu toch stuk op de kruistabellen.
Eerlijk gezegd heb ik ook nog nooit eerder een kruistabel gemaakt, dus voor mij is dit nieuw vaarwater.

In onderstaande printscreen is te zien hoe ik de Query opgebouwd heb voor een kruistabel

Query.JPG

En dat geeft dan onderstaand resultaat.

Query2.JPG

Hoe krijg ik de Query zo dat hij de resultaten zo laat zien als in de eerste post?
Met andere woorden, Voor elk onderdeel (bijvoorbeeld is voorbereid) moet hij 4 keer naast elkaar kunnen laten zien of het antwoord ja of nee is.
Boven het antwoord moet hij tonen bij welke beoordelingID deze hoort

De rest is voor mij niet spectaculair, behalve dat hij alles laat zien van 1 bepaalde SessieID.

Ik hoop dat je me hier verder mee kunt helpen.
Ik ben al op onderzoek uitgegaan naar wat een kruistabel ongeveer is, maar bijna elke site toont alleen maar hoe je er eentje maakt.
Dat helpt mij helaas niet met het begrijpen hoe een kruistabel in elkaar steekt.

Alvast bedankt

Update:

Het is mij eindelijk gelukt om een kruistabel Query te maken, echter loop ik nog tegen 1 klein probleempje aan.
Zoals beschreven, bestaat 1 sessie uit 4 beoordelingen.
Als in 1 sessie 2 beoordelingen precies hetzelfde eruit zien (qua waardes) dan laat de Query deze zien als 1 enekel beoordeling met een waarde van 2 erachter.
Ik wil eigenlijk alle beoordelingen per sessie kunnen blijven zien.
Bij de waarde in de Query heb ik alle mogelijkheden al nagelopen (Min, Max, Som, Etc) maar ik blijf maar 3 beoordelingen zien als 2 beoordelingen hetzelfde zijn.

Ik hoor graag hoe ik dit zou kunnen oplossen.
 

Bijlagen

  • TotaalSessie.JPG
    TotaalSessie.JPG
    77,8 KB · Weergaven: 50
Laatst bewerkt:
Je wilt de gegevens per sessie zien, dus SessieID is je kolomkop. En niet je waardeveld.
 
Hoi Octafish.

Heel heel heel erg bedankt voor je hulp tot dusverre, ik ben lekker op weg om een kruistabel te maken.
Ik zit alleen nog met een kleine issue in de kruistabel waar ik niet uit kom.

Ik wil de kruistabel gebruiken voor een raportage en zoals ik al zei, de volledige rapportage is gebaseerd op de sessieID.
In de allereerste printscreen is te zien hoe de rapportage (gemaakt in Excel) diverse informatie toont.
Bovenaan zie je naam medewerker staan, leiding gevende, etc, tot en met training noodzakelijk.
Dat gedeelte weet ik wel in een rapportage te proppen en daarbij de vraag te stellen voor welke sessie de teamleider een rapportage wil hebben.

In het onderste gedeelt van de rapportage worden de 4 beoordelingen weergegeven.
Dit lukt mij ook in een rapportage te plaatsen, door de pagina te kantelen en alle tekst 90 graden te draaien.

Mijn intentie is dat ik het onderste gedeelte van het formulier dan als sub formulier ga gebruiken.
Maar hoe krijg ik dan mijn SessieID hierin mee?

Als ik nu de query run, ziet deze het sessieID als een cijfer en niet meer als een SessieID.
Dit maakt het voor mij wat lastiger om het sessie ID door te geven van hoofd naar sub formulier.

Heb jij nog een oplossing?

Ik hoor het graag.
 
Dit lukt mij ook in een rapportage te plaatsen, door de pagina te kantelen en alle tekst 90 graden te draaien.
Een heel creatieve oplossing, maar vooral een heel overbodige want dat zou helemaal niet nodig hoeven te zijn :). Ik zie althans geen enkele reden waarom je het hele rapport niet met één query zou kunnen maken.
Als ik jou was zou ik een voorbeeld db maken waar we even mee kunnen stoeien, want zoals ik het nu kan zien, is het hooguit een kwartiertje werk. Laat het een half uur zijn... Dan heb ik het uiteraard niet over de opmaak, want dat is altijd even puzzelen. Maar de structuur, de data dus, kan in die tijd makkelijk gemaakt zijn. En je vraag staat al een week ;)
 
Hoi Octafish

Dank je dat je mij er mee wilt helpen.

even snel een databaseje in elkaar flansen ging me net even te veel tijd kosten, maar hopelijk red je het met onderstaande printscreen ook.
Ik was al zo gis geweest om alle informatie die ik nodig heb in 1 Query te plaatsen en dat werkt goed.

Query1.jpg

Wat ik nu graag wil is dat de Query mij vraagt welke sessie ik wil zien en dat hij dan alleen maar de informatie toont van die sessie.
Helaas werkt "[Welke sessie?]" niet in een kruistabel query zoals ik het nu kan zien.
Dus dat is eigenlijk mijn laatste issue waar ik nu tegen aanloop.

Hopelijk kun je wat met deze info, anders kijk ik morgen even hoe ik dit kan communiceren naar je (bijvoorbeeld toch een klein dbje maken.)
 
Je plaatje benadrukt alleen maar de noodzaak om de db zelf te zien; ik maak me sterk dat het veel simpeler kan. Overigens is het filteren veel beter vanaf een formulier te sturen, niet in de query. Je hangt dus de ongefilterde query onder het rapport en filtert het rapport via een formulier waarop je de datum of periode kiest.
 
Goedemorgen Octafish

Excuses dat mijn reactie wat aan de late kant is, maar ik had het even druk met andere dingen.
Ik zal proberen uit te leggen wat de bedoeling is van de database, misschien dat het dan wat makkelijker communiceren wordt.
De database is namelijk zeer simpel en eigenlijk een vertaling vanaf een excel sheet waar onze teamleiders alleen maar kruisjes op plaatsen.
Feitelijk gezien had het ook makkelijker geweest als ze de excel sheet hadden blijven gebruiken, echter ze willen dat het er wat netter uitziet en daarom willen ze gebruik maken van Access, omdat hier zulke mooie formulieren in zitten.
In onderstaande bijlage is de excell sheet te zien die ik probeer om te zetten naar Access.

Bekijk bijlage Kopie van Monitoring formulier.xls

De vele tabellen en Queries die je in de eeerdere printscreen zag hadden helaas te maken met de onlogische berekeningen die uitgevoerd worden in deze sheet en welke de teamleiders graag willen terug zien.
Zo staan er bijvoorbeeld kritieke vragen in het formulier en 1 enkel antwoord op nee betekent een score van 0.
Alle kritieke vragen goed is een score van 25.
Bij 4 goede beoordelingen heeft een medewerker dus een score van 100.
Dus al de Queries die je zag waren vertaal slagen die numerieke antwoorden ook weer omzetten naar een ja of een nee.

Maar dan nu de noodzaak waar ik tegen aan blijf hinkelen.
Zoals ik al aangaf, is er een sessie en 1 sessie bestaat uit 4 beoordelingen.
In mijn Queries ben ik goed in staat om de gegevens goed op te vragen, maar ik loop voornamelijk tegen het probleem aan dat ik niet 1 enkele sessie in een rapportage krijg.
Helaas is het zoeken op datum niet de oplossing, omdat er een grote mogelijkheid bestaat dat er verschillende sessies op een dag plaats vinden van verschillende medewerkers en ik wil juist 1 enkele sessie kunnen oproepen en als rapportage laten afdrukken. (zoals in bijgevoegde excel sheet)

Ik hoop dat de onlogica van deze database nu wat duidelijker verwoord is en ik hoop dat je me hier alsnog mee kunt helpen.

Alvast van harte bedankt
 
Ik zou zeggen: doe de db zelf er ook bij, want aan het Excel ding hebben we niet zoveel. Dat is namelijk totaal ongeschikt om te importeren als tabel. En de output (rapport) kun je alleen maken als je de correcte tabellen hebt.
 
Hoi Octafish

Er is sinds gisteren een externe partij bij betrokken om mij verder te helpen.
Deze heeft het probleem gedeeltelijk opgelost en ik wacht nog op een antwoord wat betreft de openstaande punten die nu nog open staan.

De persoon die mij geholpen heeft heeft een aardig stuk VBA geschreven (ik kom er met mijn hoofd niet bij), maar het is in ieder geval redelijk gelukt.

Voor jou informatie het stukje code wat gebruikt is (eerlijkheidshalve moet ik bekennen dat ik geen flauw idee heb wat er gebeurt).


Public Sub ResultatenVullen()
Dim db As DAO.Database
Dim rstSessies As Recordset

Dim rstResultaten As Recordset
Dim rstBeoordeling As Recordset
Dim rstBeoordelingen As Recordset
Dim i As Integer
Dim j As Integer
Dim s As String
On Error GoTo ErrorHandling
Set db = DBEngine.Workspaces(0).Databases(0)
Set rstSessies = db.OpenRecordset("SELECT * FROM Sessie WHERE SessieID > 0", dbOpenSnapshot)

' maak de tabel Resultaten leeg
db.Execute "DELETE FROM Resultaten"
Set rstResultaten = db.OpenRecordset("Resultaten", dbOpenTable, dbAppendOnly)

Do While Not rstSessies.EOF

' STAP 1 - voeg rijen toe aan de resultaten tabel
Set rstBeoordelingen = db.OpenRecordset("SELECT TOP 1 * FROM Beoordeling", dbOpenForwardOnly)
Do While Not rstBeoordelingen.EOF
For i = 0 To rstBeoordelingen.Fields.Count - 1
If rstBeoordelingen.Fields(i).Name <> "SessieID" Then
rstResultaten.AddNew
rstResultaten("SessieID") = rstSessies("SessieID").Value
rstResultaten("Toelichting") = rstBeoordelingen.Fields(i).Name
rstResultaten.Update
End If
Next i
rstBeoordelingen.MoveNext
Loop
Set rstBeoordelingen = Nothing

' STAP 2 - Voeg de beoordelingen toe aan de resultaten tabel
Set rstBeoordelingen = db.OpenRecordset("SELECT TOP 4 * FROM Beoordeling WHERE SessieID=" & CStr(rstSessies("SessieID").Value & " ORDER BY BeoordelingID ASC"), dbOpenForwardOnly)
j = 1
Do While Not rstBeoordelingen.EOF
For i = 0 To rstBeoordelingen.Fields.Count - 1
s = "SELECT [" & rstBeoordelingen.Fields(i).Name & "] as Response FROM Beoordeling WHERE SessieID=" & CStr(rstSessies("SessieID").Value) & " AND BeoordelingId=" & CStr(rstBeoordelingen("BeoordelingID").Value)
Set rstBeoordeling = db.OpenRecordset(s, dbOpenForwardOnly)
s = "UPDATE Resultaten SET Response" & CStr(j) & " = " & CStr(rstBeoordeling("Response").Value) & " WHERE Toelichting = '" & rstBeoordelingen.Fields(i).Name & "' AND SessieID = " & CStr(rstSessies("SessieID").Value)
db.Execute s
Set rstBeoordeling = Nothing
Next i
j = j + 1
rstBeoordelingen.MoveNext
Loop

Set rstBeoordelingen = Nothing
rstSessies.MoveNext
Loop
Set rstResultaten = Nothing
Set rstSessies = Nothing
Exit Sub
ErrorHandling:
MsgBox "Er is een fout opgetreden"
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan