Fortlaufende Nr mit Bezug auf Autowert vergeben

Hallo,

ich brauche mal bitte etwas Hilfe in Access.

Ich habe eine Datenbank mit zwei Tabellen erstellt. Beide Tabellen sind mit einem 1:n Bezug über den Autowert Fehlernr verbunden, nun möchte ich in meiner Untertabelle einen Zähler einbauen, der für jede Fehlernr die Bearbeitungsschritte von 1 an zählt.

Wie mache ich das am besten?

Achja, ich benutze Access 2003.

Vielen Dank schon mal für die Antworten.

Hallo,

zunächst Nachfrage: Wozu brauchst Du das und wann?

Gruß
Franz, DF6GL

Ich brauche das, um verschiedenen Fehlern die dazugehörigen Arbeitsschritte zuzuordnen.
Wäre gut, wenn ich das möglichst bald hätte.

Hallo,

Ich brauche das, um verschiedenen Fehlern die dazugehörigen
Arbeitsschritte zuzuordnen.

Dazu solltest Du eine Tabelle erstellen, die die einzelnen und möglichen Arbeitsschritte enthält. Die Arbeitsschritte sind über ein ID-Feld eindeutig identifiziertbar.

In einer weiteren Tabelle „tblFehlerarbeitsschritte“ werden zu den Fehlern (–> FehlerID) die dazu gehörende(n) Arbeitsschritte (–>ArbSchrittID) zugeordnet.

Für das Ganze brauchst Du keine laufende Nr…
wenn ich alles richtig verstanden habe.

Gruß
Franz, DF6GL

Wäre gut, wenn ich das möglichst bald hätte.

Moin Moin,

Wäre gut, wenn ich das möglichst bald hätte.

nein, das war nicht die Frage :smile:

Etwas ausführlicher was gemeint war:
Sollen diese Werte nachträglich in die Tabelle eingetragen werden?
Wenn ja, woher weiß Access welcher Bearbeitungsschritt 1 oder z.B. 6 ist? Wie definierst du (datenbanktechnisch) einen Arbeitsschritt?

Soll während der Eingabe in dein Formular die Nummerierung erzeugt werden? Also im UFO? Soll der Wert gespeichert werden?

Soll in einem Bericht die Nummerierung erzeugt werden? oder?

Vielleicht kannst du ja mal GENAU beschreiben, was du da vorhast?

Grüße aus Rostock
Wolfgang
(Netwolf)

Hallo,

ich habe mich, glaube ich, etwas ungenau ausgedrückt.

Also, die Arbeitsschritte sind individuell und sollen manuell nachgetragen werden und die nächst höhere Arbeitsschrittnr für diesen Fehler soll dann, vom System, in die Tabelle geschrieben werden.

Vielleicht ist das auch ganz einfach und ich denk einfach nur zu kompliziert.

Kann ich vielleicht einfach die Anzahl der einzelnen Fehlernr ausgeben lassen und um eins erhöhen?

Danke für die Hilfe

Starke und schwache Entitäten
Moin, Annemeg,

Vielleicht ist das auch ganz einfach und ich denk einfach nur
zu kompliziert.

gut möglich :wink:

Kann ich vielleicht einfach die Anzahl der einzelnen Fehlernr
ausgeben lassen und um eins erhöhen?

das ginge mit

select max(Schrittnummer)+1 from Schritttabelle 
where Fehlernr = wasweißichwoher

Besser und einfacher wäre es, den Arbeitsschritten einen eigenen Autowert-Schlüssel zu verpassen und beim Anlegen eine Beziehung zu dem übergeordneten Fehler aufzubauen. Dessen Schlüssel als Schlüssel in die abhängige Tabelle mitzuschleppen ist fast beinahe immer ein Kunstfehler.

Wenn ich das alles nochmal lese, schwindelt mir - weiß der Geier, was hier unter- und was übergeordnet ist. Ändert aber nichts daran, dass sich mit einwertigen Schlüsseln besser hantieren lässt.

Gruß Ralf

Hallo,

also ich habe ein Formular erstellt mit den Fehlern, ihrer Beschreibung, ect, dabei wird ein Autowert als Fehlernr vergeben.
Als Unterformular ist die Bearbeitungstabelle in der die o.g. Fehlernr vorkommt und in die man nachträglich den den Vorgang zur Fehlerbehebung eintragen kann. Dabei soll für jede Bearbeitung jedes Fehlers automatisch eine Bearbeitungsschrittnr vergeben werden, angefangen mit 1.
D.h. Fehler 1 Schritt 1,2 und 3; Fehler 2 1,2, 3 und 4 etc.

Momentan ist die Bearbeitungsschrittnr fortlaufend über alle Fehlernr, d.h. Fehler 1 hat Bearbeitungssch.nr 3, 8 und 27 zb.; Fehler 2 hat 2, 11 und 17 und so weiter.

Ich habe mir jetzt überlegt, ob ich das vielleicht über einen Zähler machen kann der mir ausgibt wie oft eine Fehlernr in der Bearbeitungstabelle vorkommt +1.

Ich hoffe das war jetzt verständlich.

Vielen Dank für die Hilfe.

Hallo,

ich habe mich, glaube ich, etwas ungenau ausgedrückt.

Also, die Arbeitsschritte sind individuell und sollen manuell
nachgetragen werden und die nächst höhere Arbeitsschrittnr für
diesen Fehler soll dann, vom System, in die Tabelle
geschrieben werden.

Das Ganze geht allenfalls in einem (Eingabe)Formular, nicht in einer Tabelle.

Vielleicht ist das auch ganz einfach und ich denk einfach nur
zu kompliziert.

Eher zu einfach… Eine solche Nummerierung brauchst Du nicht. Eine laufende Nr ist allenfalls als „schöne“ Durchnummerierung in z. B. einem Bericht nice to have, und dort kann mit den Berichtsmöglichkeiten eine lfdNr einfach erzeugt werden.

Kann ich vielleicht einfach die Anzahl der einzelnen Fehlernr
ausgeben lassen und um eins erhöhen?

Wie meinst Du das? Wieso „Anzahl der einzelnen Fehlernr“?
Wahrscheinlich soll es heißen: „Anzahl der einzelnen Arbeitsschritte“…

Wenn Du die folgende Konstruktion hast (das solltest Du mal wie schon gesagt, GENAU beschreiben):

tblFehler

FehlerID (PK)
Fehler_Beschreibung (Text)
.
.

tblArbeitsschritte
ASID (PK)
AS_FehlerID (FK aus tblFehler)
AS_LfdNr (Zahl,Long)
AS_Bezeichnung (Text)
AS_Datum (Datum/Uhrzeit)
.
.
.

Dazu ein passendes Hauptform (Basis tblFehler) mit Unterform (Basis tblArbeitsschritte) und Textfeldnamen identisch mit Tabellenfeldnamen.

Im Unterform kannst Du dann z.B. zur Erzeugung einer laufenden Nummer für das Feld „AS_LfdNr“ in dessen Eigenschaft „Standardwert“ dieses schreiben:

= Nz(Dlookup(„AS_LfdNr“;„tblArbeitsschritte“;„AS_FehlerID=“ & [AS_FehlerID]);0) + 1

Gruß
Franz, DF6GL

= Nz(Dlookup(„AS_LfdNr“;„tblArbeitsschritte“;„AS_FehlerID=“ &
[AS_FehlerID]);0) + 1

Super, das ist genau das was ich gesucht hab, hab mich selber total verwirrt und andere bestimmt auch… :wink:

Sieht bei mir dann so aus:
Nz(Dlookup(„Schrittnr“;„tbl_Bearbeitung“;„Fehlernr=“ & [Fehlernr]);0) + 1

Hab jetzt aber leider noch nen Bug: Ab dem 2. Wert ist die Schrittnr immer 2.

PS:

muss natürlich heißen:

= Nz(DCount(„AS_LfdNr“;„tblArbeitsschritte“;„AS_FehlerID=“ & [AS_FehlerID]);0) + 1

Gruß
Franz, DF6GL

muss natürlich heißen:

= Nz( DCount („AS_LfdNr“;„tblArbeitsschritte“;„AS_FehlerID=“ & [AS_FehlerID]);0) + 1

Gruß
Franz, DF6GL

Hab es schon geschafft mit DomMax().

Vielen vielen Dank für die Hilfe, find ich super das sich so viele Leute Gedanken darum gemacht haben.