Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
gruppiert nummerieren in Abfragen
zurück: Sub in UFO ausführen weiter: Access verstecken Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
schuli
Im Profil kannst Du frei den Rang ändern


Verfasst am:
19. Nov 2009, 11:57
Rufname:
Wohnort: Hannover

gruppiert nummerieren in Abfragen - gruppiert nummerieren in Abfragen

Nach oben
       Version: Office 2003

Hallo,

ich habe das folgende Problem:
ich habe eine Tabelle, die in etwa so aussieht:
Code:
TeilnehmerID   Kurs   Auswahl   
1                      A      1   
1                      B      5   
1                      C      2   
2                      B      4   
2                      A      7   
3                      C      6   
3                      B      3
Die Auswahl ist durch die zeitliche Reihenfolge der Auswahl entstanden. Was aber nun interessiert, ist die interne Nummerierung, getrennt nach Teilnehmern. Es interessiert überhaupt nicht, wer vor wem ausgewählt hat.

Was ich haben möchte, ist eine Nummerierung innerhalb einer internen Gruppierung. Dies ist in einem Bericht zwar einfach, in einer Abfrage aber scheinbar nicht ohne VBA erreichbar.

Ich möchte also die folgende Tabelle erhalten:
Code:
TeilnehmerID   Kurs   Auswahl   Praeferenz
1                      A       1              1
1                      B       5              3
1                      C       2              2
2                      B       4              1
2                      A       7              2
3                      C       6              2
3                      B       3              1
Auf der Webseite Datensätze in Access Abfragen gruppiert nummerieren habe die die folgende auf VBA basierte Lösung gefunden:
Code:
Function NummerierungGrp(varId As Variant, _
    varGrp As Variant) _
As Integer
    Static intCounter As Integer
    Static varPrevGrp As Variant
 
    If IsNull(varId) Then
        intCounter = 0
    End If
    If Not varPrevGrp = varGrp Then
        intCounter = 0
    End If
    intCounter = intCounter + 1
    varPrevGrp = varGrp
    Nummerierung = intCounter
End Function
In meiner Abfrage schreibe ich dann in eine Spalte:
Code:
Praeferenz: NummerierungGrp([TeilnehmerID]; [Auswahl])
Hat das schon einmal jemand ausprobiert? Bei mir klappt es nicht. Ich erhalte in jedem Feld eine "0", habe aber auch keine Idee, wie genau die VBA-Funktion geändert werden muss.

Ein Fehler ist jedenfalls schon in der vorletzten Zeile: Nummerierung ist gar nicht definiert, macht also nur dann einen Sinn, wenn es irgendwie zusammen mit der Lösung zur Nummerierung [url=Datensätze in Access Abfragen nummerieren]http://www.software-chuchi.ch/praxis/microsoft_access_abfragen_datensatz_nummerierung.htm[/url] verwendet wird.

Das aber wiederum ist nicht notwendig, da ich die Gesamtnummerierung allein durch die folgende Funktion erreichen kann:
Code:
LaufNummer: (SELECT Count (*) FROM [TeilnehmerID] AS LaufNr WHERE [LaufNr].[Auswahl] < [TeilnehmerID].[Auswahl])+1
(brauche ich nicht, da die Auswahl ohnehin schon die richtige Reihenfolge anzeigt)

Hat jemand eine Idee? Ich freue mich über jeden konstruktiven Beitrag.
helado
Acc97


Verfasst am:
19. Nov 2009, 12:28
Rufname:
Wohnort: Oberlausitz


AW: gruppiert nummerieren in Abfragen - AW: gruppiert nummerieren in Abfragen

Nach oben
       Version: Office 2003

FAQ 3.11 Laufende Nummer/Summe in Abfragen is glaube was für dich
_________________
schöne Grüße
Helado
----------------------------------------------------------------------
9 Stimmen in meinem Kopf sagen: "Ich bin nicht verrückt!"

1e pfeift die Tetris Melodie
schuli
Im Profil kannst Du frei den Rang ändern


Verfasst am:
19. Nov 2009, 13:07
Rufname:
Wohnort: Hannover

AW: gruppiert nummerieren in Abfragen - AW: gruppiert nummerieren in Abfragen

Nach oben
       Version: Office 2003

Den Tipp von Karl Donaubauer (ursprünglich von Fortlaufende Nummer in Abfragen) kenne ich bereits, siehe vorletzter Absatz meiner Anfrage. Damit wird aber nur in der Abfrage nummeriert, aber nicht gruppiert.

Die Nummerierung innerhalb einer Gruppierung, d.h. bei einem neuen Teilnehmer wieder mit 1 beginnend, ist mit ziemlicher Sicherheit ohne VBA nicht möglich.

Trotzdem vielen Dank für den Beitrag.
Martin1000
Im Profil kannst Du frei den Rang ändern


Verfasst am:
22. Nov 2009, 20:48
Rufname:
Wohnort: Hier isses schean!

AW: gruppiert nummerieren in Abfragen - AW: gruppiert nummerieren in Abfragen

Nach oben
       Version: Office 2003

Martin1000 am 22. Nov 2009 um 18:25 hat folgendes geschrieben:
Hi,

also mal alternativ: Abfrage mit gruppierten Daten und dann zweite Abfrage mit Nummerierung (die Nummerierung aus der ersten Abfrage ermitteln).

Viel Spaß

Hier mal noch ne andere Variant:
Code:
Public Function SeqNrQur(SQLString As String, _
                         IDFieldName As String, _
                         IDFieldValue As Variant) As Long
On Error GoTo ErrSeqNrQur
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim strCriteria As String
    Dim lngCount As Long
   
    strCriteria = IDFieldName & " = " & IDFieldValue
    Set db = CurrentDb
    Set rst = db.OpenRecordset(SQLString, dbOpenSnapshot)
    If rst.RecordCount Then 'Datensätze vorhanden
        rst.FindFirst strCriteria
        If Not rst.NoMatch Then
            SeqNrQur = rst.AbsolutePosition + 1
          Else
            SeqNrQur = 0
        End If
      Else     'Kein Daten
        SeqNrQur = 0
    End If
ExitSeqNrQur:
    rst.Close
    Set rst = Nothing
    Set db = Nothing
    Exit Function
ErrSeqNrQur:
    MsgBox Err.Number & vbCrLf & Err.Description
    Resume ExitSeqNrQur
End Function
Aufruf der Funktion:

Als erstes erstellst du eine Abfrag die dir die richtigen Ergebnisse liefert. Diesen SQL setzt du in das erste Argument ("SELECT Feld FROM Tabelle ORDER BY Feld"), das nächste Argument ist der Feldname nach dem du gruppierst oder sortierst und im letzen den Bezug auf das Feld in der Abfrage.

z.B.
Code:
'Wenn Gruppen/Sortierfeld einen Text enthält
SeqNrQur("SELECT Ausd1, Ausd2 FROM Tabelle GROUP BY Ausd1, Ausd2 ORDER BY Ausd2";"Ausdr2";"'" & [Ausdr2] & "'")

'Wenn Gruppen/Sortierfeld eine Zahl enthält
SeqNrQur("SELECT Ausd1, Ausd2 FROM Tabelle GROUP BY Ausd1, Ausd2 ORDER BY Ausd2";"Ausdr2"; [Ausdr2] )
Viel Spaß


SeqNrQur_20091122.zip
 Beschreibung:

Download
 Dateiname:  SeqNrQur_20091122.zip
 Dateigröße:  32.56 KB
 Heruntergeladen:  69 mal

Marmeladenglas
komme zurecht


Verfasst am:
22. Nov 2009, 21:17
Rufname:


AW: gruppiert nummerieren in Abfragen - AW: gruppiert nummerieren in Abfragen

Nach oben
       Version: Office 2003

Hi,
warum nimmst du die TeilnehmerID nicht als weiteres Kriterium dazu ?
Code:
Praeferenz: (SELECT Count (*) FROM [T1] AS LaufNr WHERE [LaufNr].[Auswahl] < [T1].[Auswahl]AND T1.TeilnehmerID = LaufNR.TeilnehmerID)+1
oder mit einer Domänenfunktion:
Code:
DPraeferenz: DCount("*";"T1";"[Auswahl] <" & [Auswahl] & " AND TeilnehmerID = " & [TeilnehmerID])+1
T1 ist dein Tabellenname
schuli
Im Profil kannst Du frei den Rang ändern


Verfasst am:
25. Nov 2009, 13:23
Rufname:
Wohnort: Hannover

AW: gruppiert nummerieren in Abfragen - AW: gruppiert nummerieren in Abfragen

Nach oben
       Version: Office 2003

Hallo und vielen Dank für alle Beiträge. Ich habe mittlerweile die Lösung gefunden, die, angesichts der Tatsache, dass ich der Lösung bereits sehr nahe war, ganz simpel ist:

Mit dem folgenden Code funktioniert es:
Code:
Function NummerierungGrp(varId As Variant, _
    varGrp As Variant) As Integer
    Static intCounter As Integer
    Static varPrevGrp As Variant
 
    If IsNull(varId) Then
        intCounter = 0
    End If
    If Not varPrevGrp = varGrp Then
        intCounter = 0
    End If
    intCounter = intCounter + 1
    varPrevGrp = varGrp
    NummerierungGrp = intCounter
End Function
Ich hatte es zwar schon einmal so ausprobiert, war aber aufgrund eines weiteren Flüchtigkeitsfehlers nicht zum gewünschten Ergebnis gekommen. So klappt es nun aber. Ich erhalte genau die Tabelle, die ich eingangs erhalten wollte.

Der Thread kann somit als gelöst gekennzeichnet werden.
Marmeladenglas
komme zurecht


Verfasst am:
25. Nov 2009, 13:28
Rufname:

AW: gruppiert nummerieren in Abfragen - AW: gruppiert nummerieren in Abfragen

Nach oben
       Version: Office 2003

Hi,
wobei ich mich frage warum du hier einen langsamen, umständlichen Weg über VBA wählst. Die Abfrage wie präsentiert wäre vorzuziehen.
Martin1000
Im Profil kannst Du frei den Rang ändern


Verfasst am:
25. Nov 2009, 14:28
Rufname:
Wohnort: Hier isses schean!

AW: gruppiert nummerieren in Abfragen - AW: gruppiert nummerieren in Abfragen

Nach oben
       Version: Office 2003

Hallo Marmeladenglas,

stimm Dir zu!
schuli
Im Profil kannst Du frei den Rang ändern


Verfasst am:
29. Nov 2009, 15:45
Rufname:
Wohnort: Hannover


AW: gruppiert nummerieren in Abfragen - AW: gruppiert nummerieren in Abfragen

Nach oben
       Version: Office 2003

Hallo Marmeladenglas,

Du hast vollkommen recht. Das ist von allen vorgestellten die optimale Lösung. Es ist nicht nur viel einfacher, sondern auch unabhängig von Microsoft, da in jeder Datenbankanwendung verwendbar.

Schöne Grüße und vielen Dank für die Beiträge
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Daten abfragen nach Buchstabenreihenfolge 2 wrengers 699 07. März 2005, 22:59
Gast Daten abfragen nach Buchstabenreihenfolge
Keine neuen Beiträge Access Tabellen & Abfragen: mehrer abfragen ein formular 1 romu 719 10. Jan 2005, 15:54
lothi mehrer abfragen ein formular
Keine neuen Beiträge Access Tabellen & Abfragen: Parameter Abfragen mit "Drop Down Menu" 2 tomsingapore1 1620 23. Dez 2004, 17:56
tomsingapore1 Parameter Abfragen mit "Drop Down Menu"
Keine neuen Beiträge Access Tabellen & Abfragen: Memoformat in Tabelle wird bei Abfragen eiskalt trunkiert?!! 8 Muschimaus 1516 03. Dez 2004, 19:23
Skogafoss Memoformat in Tabelle wird bei Abfragen eiskalt trunkiert?!!
Keine neuen Beiträge Access Tabellen & Abfragen: Abfragen- Formularfeld als Kriterium 1 Gast 684 22. Nov 2004, 15:02
Felix15 Abfragen- Formularfeld als Kriterium
Keine neuen Beiträge Access Tabellen & Abfragen: Access automatisch nummerieren lassen 3 NewJanJan 4931 12. Nov 2004, 15:48
lothi Access automatisch nummerieren lassen
Keine neuen Beiträge Access Tabellen & Abfragen: Platzhalter in Abfragen einbinden 2 santje243 915 06. Nov 2004, 12:01
santje243 Platzhalter in Abfragen einbinden
Keine neuen Beiträge Access Tabellen & Abfragen: spezielle Abfragen 1 Hilfe 704 27. Sep 2004, 17:47
Skogafoss spezielle Abfragen
Keine neuen Beiträge Access Tabellen & Abfragen: Leere Felder in Abfragen ausblenden. 3 Gast 1374 18. Aug 2004, 14:39
mabe38 Leere Felder in Abfragen ausblenden.
Keine neuen Beiträge Access Tabellen & Abfragen: Verschachtelte SQL Abfragen in ACCESS 2000? 1 Gast 1782 17. Jul 2004, 22:34
faßnacht(IT); Verschachtelte SQL Abfragen in ACCESS 2000?
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Abfragen ausgeben?? 2 woerny01 669 11. Jul 2004, 07:10
Gast SQL Abfragen ausgeben??
Keine neuen Beiträge Access Tabellen & Abfragen: Eingabefelder in Abfragen?!?! 6 Diovan80 609 28. Jun 2004, 09:51
Diovan Eingabefelder in Abfragen?!?!
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps