Rijnummers toevoegen aan query

Status
Niet open voor verdere reacties.

Matjes

Gebruiker
Lid geworden
21 jun 2016
Berichten
76
In Access heb ik een formulier welke gebaseerd is op een query. Nu wil ik aan elke rij in het formulier een uniek oplopende rijnummer toevoegen, beginnend vanaf 1. Kan ik dit middels een berekend veld in de query maken? Als iemand een suggestie of een voorbeeld heeft dan zie ik deze graag tegemoet.

Matjes
 
Ik weet niet of deze pagina de oplossing bevat die Matjes zoekt. Je kunt in een query prima een volgnummer genereren. In dit voorbeeldje wordt een nummer gegenereerd dat bij elke volgende groep (land in dit geval) overnieuw begint met 1.

PHP:
SELECT a.CustomerID, a.Country, a.CompanyName, Count(1) AS Volgnummer
FROM Customers AS a, Customers AS b
WHERE (((a.CustomerID)>=[b].[CustomerID]) AND ((a.Country)=[b].[Country]))
GROUP BY a.CustomerID, a.Country, a.CompanyName
ORDER BY a.Country, a.CompanyName;
Als je niet op groep wilt nummeren, kan dat natuurlijk ook:
PHP:
SELECT a.CustomerID, a.Country, a.CompanyName, Count(1) AS Volgnummer
FROM Customers AS a, Customers AS b
WHERE (((a.CustomerID)>=[b].[CustomerID]))
GROUP BY a.CustomerID, a.Country, a.CompanyName
ORDER BY a.CompanyName;
In een rapport is het overigens simpel, daar hoef je alleen een tekstvak in een detailsectie te zetten met de formule =1 en de eigenschap <Lopend totaal> aan te passen.
 
Bedankt voor het voorbeeldje. Ik kom er alleen nog niet uit. Met onderstaande code krijg ik wel volgnummers alleen niet oplopend vanaf 1 (maar ergens vanaf 31).
Als ik in de WHERE a.CSD_ID =209 weglaat (dus alle records laat zien) dan telt hij wel oplopend vanaf 1. Maar het is dus de bedoeling dat hij vanaf 1 telt bij een query met een bepaald CSD_ID

Als je nog een toelichting kan geven dan graag :thumb:

Code:
SELECT a.CVE_Eis_ID AS Expr1, Count(1) AS Volgnummer, a.Document, a.Blad, a.Bevinding
FROM tblCVE_Eis AS a, tblCVE_Eis AS b
WHERE (((a.CSD_ID)=209) AND ((a.CVE_Eis_ID)>=[b].[CVE_Eis_ID]))
GROUP BY a.CVE_Eis_ID, a.Document, a.Blad, a.Bevinding
ORDER BY a.CVE_Eis_ID, a.Document, a.Blad;
 
Laatst bewerkt:
In mijn voorbeeldje reset ik de teller voor elk land, maar ik laat wél alle records zien. Dat doe jij niet: van de ene tabel ([a]) laat je alleen records zien waar CSD_ID 209 is, van haal je alle records op. Die krijgen dus wél een nummer, maar krijg je vanwege de WHERE op [a] alleen niet te zien. Je zult dus ook b.CSD_ID op 209 moeten filteren. Of een subquery gebruiken op beide tabellen als dit niet werkt.
 
Inderdaad, als ik op b.CSD_ID dezelfde WHERE zet als op a.CSD_ID dan telt hij netjes oplopend vanaf 1. Toch ietwat een complexe manier voor ogenschijnlijk iets simpels :)

Maar het werkt, bedankt voor de uitleg.
 
Toch ietwat een complexe manier voor ogenschijnlijk iets simpels
Valt wel mee; je wilt iets (oplopend nummer) dat eigenlijk niet kan. Met een trucje (tabel twee keer gebruiken) kan het wél, zelfs met meer mogelijkheden dan je in eerste instantie zou denken (opnieuw nummeren). Dan is het niet vreemd dat als je een filtering wilt op de gegevens, je die filtering op beide tabellen moet uitvoeren. Je hebt immers twee keer dezelfde tabel gebruikt. Voor Access maakt dat echter niet uit; elke tabel heeft dus een eigen filter nodig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan