2016-06-02 7 views
0

Neu auf dieser Website und Zugriff. Ich versuche, eine Datenbank zu erstellen, um ein Hauptprotokoll zu verfolgen. Brauchen Sie Hilfe bei der fortlaufenden Nummerierung. Ich habe derzeit die folgenden Tabellen.Access 2013 - fortlaufende Nummerierung ohne Autonummer

PO Tabelle POID - Automatische Nummerierung (PK)
PODate - Datum/Uhrzeit
Lieferant - String

Artikel Tabelle ItemID - Automatische Nummerierung (PK)
POID - Ingeter (FK)
ItemDescription - String
Menge - Integer

Masterlog Tabelle MasterLogID - Automatische Nummerierung (PK)
ItemID - Integer (FK)
PieceNumber - Ganzzahl (1,2,3 ... usw.)
MFG - String
Prozess - String
Länge - Integer
MfgIDNum - String (ABD123XTY-1234)

Ich versuche, die Dateneingabe des PieceNumber Feld zu automatisieren. Wenn Sie also eine neue Bestellung eingeben und ihr Artikel hinzufügen, erhalten Sie sie einmal. Es fügt der Masterlog-Tabelle eine Zeile hinzu, beginnend mit der Nummer 1, durch wie viele Teile wir auch haben. Wir nummerieren die Stücke basierend auf den Gegenständen, die wir gekauft haben (d. H. Mit Gegenstand 1 haben wir 100 Stücke gekauft. So würde ich Gegenstand 1, Teil 1 bis 100 haben.) Dann können wir die anderen Daten zu der Tabelle hinzufügen. Ich versuche nur, die Dateneingabedauer zu reduzieren und einige Fehler bei der Nummerierung dieses Feldes zu vermeiden.

Irgendwelche Ideen?

Antwort

1

So etwas wäre eine sehr einfache Art, dies zu tun. Sie müssten eine vordefinierte Tabelle mit Zahlen von 1 bis jedoch hohe Menge Start genannt Zahlen haben könnten Sie haben:

INSERT INTO MasterLog (ItemID, PieceNumber) 
SELECT Item.ItemID, Numbers.Number 
FROM Item, Numbers 
WHERE (Item.ItemID = Forms!Items!ItemID) AND 
    (Numbers.Number <= Item.Quantity) 
ORDER BY Numbers.Number 

Wenn Sie die Stücke eins nach dem anderen hinzufügen wollte man auf die das PieceNumber Feld ausfallen könnten verwandtes Formular. Stellen Sie sicher, dass Sie MasterLog.ItemID Standard auch:

=Nz(DMax("[PieceNumber]","[MasterLog]","[ItemID] = " & Forms!Items!ItemID), 0) + 1 

Für eine VBA-Lösung so etwas wie dies versuchen:

Dim db As Database 
Dim strSQL As String 
Dim frm As Form 
Dim i As Integer 

    Set db = CodeDb() 
    Set frm = Forms!Items 

    If frm!Quantity > 0 Then 
     For i = 1 To frm!Quantity 
      strSQL = "INSERT INTO MasterLog (ItemID, PieceNumber) " & _ 
       "SELECT " & frm!Item & " AS ItemID, " & _ 
       i & " AS PieceNumber" 
      db.Execute strSQL, dbFailOnError 
     Next i 
    End If 

    Set db = Nothing 

Alle diese davon ausgehen, ein Formular Ihr aktuelles Element namens Elemente anzeigen.

+0

Ok. Ich werde es versuchen.Ich dachte, ich könnte eine Schleife mit VB machen, i = 0 – jdwk6

+0

@ jdwk6 Das ist auch vollkommen in Ordnung. Ich habe versucht, Ihnen Optionen ohne Code zu geben. – JJ32

+0

Sorry, ich bin nicht an den Kommentarbereich gewöhnt, ich habe versucht, mehr Informationen in meinen Kommentar einzutragen und erkannte, dass ich Enter nicht drücken konnte. Ich bin mir nicht wirklich sicher, ob ich einen anderen Tisch kreieren könnte, da meine Mengen sehr unterschiedlich sein werden. Es könnte eine kleine Menge zu einer großen Menge sein, so dass ich eine Tabelle erstellen müsste, die eine sehr große Menge an Zahlen für die Chance hat, dass wir eine Bestellung bekommen, die diese Menge hat. Ich werde diese Option jedoch versuchen. Vielen Dank. – jdwk6