Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Zeilennummern je Abfragegruppe anzeigen





Frage

Hallo, Mein Problem: in Access nach Abfrage in verschiedene Gruppen und nach Gruppe und Zeit sortiert, die Zeilennummern jeweils von 1 ... je Gruppe. Mit "Nummer: (Select Count (*) FROM [Datenbank] as X WHERE [X].[Zeit] < [Datenbank].[Zeit])+1" funktioniert das nur für die gesamte Datenbank und nicht wie gewünscht je einzelne Gruppe. Wenn mir jemand helfen könnte, wäre ich dankbar.

Antwort 1 von piano

Hallo
Ich denke, das geht nur über einen Bericht:
Zeilenzähler manuell verwalten:
im Ereignis "Detailbereich": zz = zz + 1
im Ereignis "Gruppenkopf": zz = 0

Gruß piano

Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -

Antwort 2 von Eugen

Hallo Piano

Vielen Dank für die Antwort. Löst aber leider nicht meine Vorstellung, dass in der Datenbank nach dem bereits erwähnten Sotieren nach 8 Gruppen und aufsteigender Zeit in einem Feld jeweils von 1 bis ... durchgezählt wird.

Mit freundlichem Gruß

Eugen

Antwort 3 von piano

Hallo
Ist mir schon klar, dass diese Lösung nur die Papierausgabe ste steuert und nicht die Tabelle betrifft.
Wenn du das willst, musst du die gruppierte Tabelle mittels VBA kopieren und wie oben einen Zähler über Gruppenwechsel steuern.
Wenn du willst, werde ich ein Muster so einer Prozedur posten.
mfg
piano

Antwort 4 von Eugen

Hallo piano

vielen Dank für die angebotene Hilfe, die ich auch gerne annehmen werde. Muß dazu aber einige Dinge erläutern. Die Datenbanktabelle wird über eine programmierte Anwendung aufgerufen, bei der Stoppuhren über ein Interfase gestartet werden, nach externem Stoppen die einzelnen Zeiten duch Aufruf der Startnummern die Zeiten in die Datenbank übernommen werden. Über eines der Butons können u.a. die Teilnehmer wie bereits erwähnt nach Gruppen und Zeit sortiert werden. Dabei wäre es dann schön, wenn nach entsprechender Abfrage die Plazierungen in den einzelnen Gruppen mit 1., 2., 3., usw. schon während des Rennens in einer Spalte erscheinen. Somit ist ein kopieren bei laufender Anwendung nicht möglich, ich bin aber nur der Nutzer des Programmes und habe mit Access keine bzw. sehr wenig Erfahrung.

Mit freundlichem Gruß
Eugen

Antwort 5 von piano

Hallo
sorry, dann kann ich dir auch nicht helfen
Gruss
piano

Antwort 6 von piano

Hallo
Nachdem ich deine Antwort 4 nochmals gelesen habe, könnte ich mir doch eine VBA-Lösung vorstellen.
Nach dem Sortieren füge folgende Funktion ein:

Public Function GruppenNummer()
Dim Zähler As Long
Dim AltGruppe
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM DeineTabelle")

Do While Not rs.EOF
    If rs!Gruppenfeld <> AltGruppe Then
        Zähler = 0
        AltGruppe = rs!Gruppenfeld
    End If
    Zähler = Zähler + 1
    rs.Edit
    rs!ZählerFeld = Zähler
    rs.Update
    rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
End Function


Für "Gruppenfeld " und "ZählerFeld " die richtigen Feldnamen einsetzen.
PS: Je nach Access-Version und DB-Zugriffsmodus kann die Syntax leicht variieren!

Gruß piano

Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
- probieren geht über studieren -

Antwort 7 von Eugen

Hallo Piano,
erstmal vielen Dank für Deine Mühe und die Lösung. Wenn ich die vorgeschlagene Funktion in der SQL-Ansicht der Auswahlabfrage einfüge, erscheinen Fehlermeldungen. Wie bereits erwähnt, bin ich Laie und mache bestimmt was falsch. Ich arbeite mit Office Access 2003, das Gruppenfeld = Gruppe, das Zählerfeld = Platz, die Tabelle = Kettcardb2003-1. Wenn Du mir Deine Lösung mit genauen Anweisungen, was ich wo einfügen muß, nochmals mitteilen könntest, wäre ich sehr dankbar.

Noch einen schönen, wenn auch verschneiten Sonntag und freundliche Grüße

Eugen

Antwort 8 von piano

Hallo
Wie rufst du die Abfrage auf?
Wenn es ein Button ist, dann ergänze wie im nachfolgenden Code in den Eigenschaften beim Ereignis "Beim Klicken" folgenden Code (fett):
Option Compare Database

Private Sub Befehl0_Click()
On Error GoTo Err_Befehl0_Click

    Dim stDocName As String

    stDocName = "DeineTabelle Abfrage"
    DoCmd.OpenQuery stDocName, acNormal, acEdit
    Dim x
    x = GruppenNummer()
    
Exit_Befehl0_Click:
    Exit Sub

Err_Befehl0_Click:
    MsgBox Err.Description
    Resume Exit_Befehl0_Click
End Sub


Dann füge obige Funktion in einem beliebigen Modul ein.
Gruss
piano

Antwort 9 von Eugen

Hallo Piano

Der Ersteller der Anwendung hat mit einem zusätzlichen Button Deine Funktionen/Code eingesetzt. Ausser einem noch zu behebenden Laufzeitfehler 2147217864 (80040e38) entspricht die Lösung genau meinen Vorstellungen/Wünschen. Echt super. Nochmals herzlichen Dank.

Mit freundlichen Grüssen

Eugen

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: