2009-06-12 17 views
1

Ich arbeite mit einem Produkt, das in einem 2000lb Sack kommt und auf einer Palette platziert wird. Wenn dieses Produkt hergestellt wird, hat es viele verschiedene Elemente, die getestet werden und jeder Test hat ein Feld, in das die numerischen Daten eingefügt werden. Jedem dieser Testaufzeichnungen wird dann eine Nummer zugewiesen, zum Beispiel L20444.Kopieren eines Datensatzes in VBA

Jetzt haben wir die Möglichkeit, den 2000lb Sack zu nehmen und in 80 20lb Säcke umzuwandeln. Nur 40 20lb Säcke können auf einer Palette Platz finden, indem Sie jetzt die eine Palette L20444 nehmen und zwei Paletten mit der Nummer L20444 herstellen. Dies führt zu einem Problem mit dem Bestand, da die Nummer L20444 nur einem Lagerort zugeordnet werden kann, nicht zwei.

Also meine Chefs, was eine Nummer zu erstellen, die fast gleich ist, aber unterschiedlich genug, um die zweite Palette im Lager zu platzieren. Die zweite Palette wird jetzt L20444B sein. Es wird immer noch die gleichen getesteten Nummern haben und ist eine "Kopie" des Originals L20444.

Meine Frage ist, kann ich den Datensatz L20444 nehmen und alle Daten für diesen Datensatz kopieren und speichern Sie es dann als L20444B, so dass es im Lager platziert werden kann.

So ist es für VBA möglich, einen Datensatz zu kopieren, umzubenennen und dann in der gleichen Datenbank wie ein neuer Datensatz zu speichern?

Jede Hilfe wäre willkommen, Danke.

Antwort

1

Wenn ich Sie richtig lesen, klingt es wie Sie wollen eine SQL-Anweisung, um einen neuen Datensatz zu erstellen.

Sie verwenden Microsoft Access? Ich würde empfehlen, zuerst eine Abfrage zu erstellen, die das im Abfrageeditor ausführt. Es wird eine Anfügeabfrage, etwas entlang der Linien der folgenden sein:

INSERT INTO TableA (ID,col1, col2) 
SELECT [ID] & "B" AS NewName,col1, col2 
FROM TableA 
WHERE (([ID]="L20444")); 

-Test zuerst diesen sicherzustellen, dass es tut, was Sie wollen, und „L20444“ in einen Parameter machen ([oldid] oder etwas). Fügen Sie dann Code in Ihrem VBA-Skript hinzu, das diese Abfrage ausführt. Es sollte Pop-up nach OldID fragen, wenn Sie es ausführen.

Dann müssen Sie lernen, wie parametrisierte Abfragen von VBA ausgeführt werden. Etwas wie folgt aus:

Set qdf1 = CurrentDb.QueryDefs("myQuery") 
qdf1.Parameters("OldID") = theOldID 
qdf1.Execute 

Nicht getestet, Suche VBA-Hilfe für QueryDefs wenn meine Syntax ist nicht ganz richtig.

1

Warum erstellen Sie keine neue Tabelle, die die Position der zwei Paletten (und der neuen Nummer (n)) verfolgt, die (mit einem Fremdschlüssel) mit dem einzelnen Datensatz für den Bestand in der Originaltabelle?

Das sollte funktionieren und vermeiden, was sonst ein Albtraum von redundanten Daten werden würde.

+0

Es ist schwer zu erklären, aber ich brauche es in der gleichen Tabelle zu sein. Es wäre also so, als ob zwei verschiedene Zahlen die gleichen getesteten Ergebnisse hätten. L20444 und L20444B, zwei verschiedene Aufzeichnungen, hatten aber die gleichen Ergebnisse von den Tests. Ich weiß nicht, ob ich das klar erkläre, aber das wollen meine Chefs. Ich hoffe das hilft. –

+0

Ich weiß die Antwort zu schätzen, und ich sehe genau, was Sie mit der Redundanz sagen. Ich würde es gerne so machen, aber mein Rücken ist gegen die Ecke und ich kann sonst nicht von Bossen überzeugen. Danke, obwohl ich sagte, dass es sehr geschätzt wird –