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 -
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
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
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
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
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:
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 -
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
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
Dann füge obige Funktion in einem beliebigen Modul ein.
Gruss
piano
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 SubDann 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
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

