Willkommen bei SO.
Mein Vorschlag wäre, eine Tabelle zu erstellen, um die Sequenznummern zu halten. Für dieses Beispiel nennen wir es ProdSeq, was bedeutet Produktion Sequenzen. Als Teil dieser Tabellendefinition würde ich Datenmakros (Access 2010 und höher) verwenden, um die Sequenzen zuzuweisen, wenn Datensätze hinzugefügt werden. Ich würde einen eindeutigen Index verwenden, um sicherzustellen, dass keine Duplikate erstellt werden.
Tabelle: ProdSeq (Felddefinitionen)
MachineID
(Number - Long) - Referenzen ID Maschine in Maschinen Tabelle
ProdSeq
(Number - Long) - inkrementiert für jede Maschine
OrderID
(Nummer - Lang) - Referenzen Bestellnummer in Bestellungen Tabelle
Indizes
Unter dem Entwurf Band Registerkarte, wenn die ProdSeq
Tabelle entwerfen, klicken Sie auf die Indizes Taste.
- einen Index erstellen genannt UniqueKey
- Zeile 1: Index Name =
UniqueKey
, Feldname = MachineID
- Row 2: Index Name = Leave Blank, Feldname =
ProdSequence
- Klicken Sie auf Zeile 1, Spalte 1, und legen Sie die folgenden Indexeigenschaften fest:
Primary = Yes
Unique = Yes
Ignore Nulls = No
Daten Macros
Unter dem Entwurf Band Registerkarte, wenn die ProdSeq
Tabelle entwerfen, klicken Sie auf die Erstellen von Daten Makros Schaltfläche und dann die vor der Änderung Schaltfläche. Geben Sie folgende Daten Makro: (Pastebin link)
Erstellen Sie die Vor Ändern Daten Makro- und setzen Sie ihn wie folgt:
If [IsInsert] Then
SetLocalVar
Name LatestProdSequence
Expression = 0
Look Up A Record In ProdSeq
Where Condition =[ProdSeqLookup].[MachineID]=[ProdSeq].[MachineID] And
[ProdSeqLookup].[LatestSeq] = True
Alias ProdSeqLookup
SetLocalVar
Name LatestProdSequence
Expression =[ProdSeqLookup].[ProdSequence]
SetField
Name ProdSeq.ProdSequence
Value = [LatestProdSequence]+1
SetField
Name ProdSeq.LatestSeq
Value = True
End If
Achten Sie besonders auf die Tatsache, dass nur eine SetLocalVar innerhalb der LookUpRecord Klausel ist. Verwenden Sie die Schaltfläche zum Minimieren/Erweitern (-/+) in LookUpRecord, um sich zu vergewissern.
Erstellen Sie die Nach Einfügen Daten Makro und legen Sie es wie folgt: (Pastebin Link)
For Each Record In ProdSeq
Where Condition = [ProdSeqFlagFix].[MachineID]=[ProdSeq].[MachineID] And
[ProdSeqFlagFix].[LatestSeq]=True And
[ProdSeqFlagFix].[ProdSequence]<>[ProdSeq].[ProdSequence]
EditRecord
SetField
Name ProdSeqFlagFix.LatestSeq
Value = False
End EditRecord
testen Sie es aus
Sie dies, um in eine leere Datenbank erstellen können, um zu sehen, was ich bin sprechen über. Sie sollten in der Lage sein, es an Ihre spezifische Situation anzupassen.
Formular
auf dem Formular, wenn der Benutzer eine Maschine und Ordnung auswählt, können Sie VBA verwenden, um für einen vorhandenen Datensatz in ProdSeq zu überprüfen, und die ID holen. Wenn kein Datensatz vorhanden ist, können Sie einen erstellen und dann die ProdSeq-ID an das Formular zurückgeben.
Hinweis: Abhängig von Ihrem Entwurf müssen Sie möglicherweise auch ein Datenmakro in der Tabelle Schedules erstellen. Angenommen, jemand erstellt einen Zeitplan mit einer bestimmten Maschine und Bestellung und reserviert einen Produktions-Slot. Nehmen wir nun an, sie ändern die Order ID. Wir haben einen Produktions-Slot, der fälschlicherweise reserviert wurde. Wenn dies zutrifft, benötigen Sie außerdem ein AfterUpdate-Datenmakro in der Terminplanungstabelle, das prüft, ob [alt] .OrderID <> [Zeitplan] .OrderID - und falls sie sich unterscheiden, den Produktions-Slot aus dem Zeitplan entfernt Tabelle und die Prod Sequence-Tabelle.
Willkommen bei SO, aber ich kann Ihnen sagen, dass Sie nicht den Abschnitt "Wie stelle ich eine Frage?" Auf dieser Website gelesen haben, bevor Sie Ihren ersten Beitrag verfassen.Sie haben sich auch nicht die Mühe gemacht, die 2-minütige Site-Tour zu unternehmen. Bitte teilen Sie Ihre relevanten Code-Schnipsel zur Lösung so viel wie Sie können. Schlagen Sie einen Blick auf http://stackoverflow.com/help/how-to-ask, bevor Sie erneut buchen. –
Das ist möglich, aber wie können wir Ihnen helfen? Wir kennen Ihre Tabellenstruktur, den Datentyp usw. nicht. Sie können einen Screenshot Ihrer Formular- und Tabellendaten (Beispieldaten) erstellen. – harun24hr