2017-04-14 3 views
0

Ich werde dies mit der Voraus Zulassung qualifizieren, dass ich nicht ein professioneller Programmierer oder Datenbank-Designer bin. Ich hatte ein spezifisches Problem zu lösen - die Notwendigkeit, eine große Menge an Informationen über Anträge auf Leistungsbezug von Mitarbeitern zu verwalten - und begrenzte Ressourcen und baute eine Datenbank auf, die die Excel-Tabelle ersetzte, die ich geerbt hatte. Ich lerne, während ich gehe, und was ich wirklich herausfinden möchte, ist, kann Access tun, was ich mir vorstelle, oder muss ich mein Ziel anpassen?Kann ich mehrere neue Datensätze basierend auf dem Wert in einer anderen Tabelle in MS Access 2013 generieren?

Die Haupttabellen, die meine Datenbank enthält, sind MITARBEITER, ANFORDERUNGEN, AUFGABEN und AKTIVITÄT (plus einige Hilfstabellen, die für Dropdown-Felder usw. verwendet werden). Jeder Mitarbeiter kann mehrere Anfragen haben, und für jede Anfrage habe ich TASKS verwendet, um zu verfolgen, was alles erledigt werden muss, von wem und bis wann, um die Anfrage von Anfang bis Ende zu sehen (Ich bin der einzige Benutzer der DBase-Datei selbst, aber ich veröffentliche die Aufgabenliste als Bericht für die Beteiligten). AKTIVITÄT, wie Sie es erwarten, ist die "Journaling" -Funktion, wo ich den Überblick über was gemacht wurde, Konversationen etc.

Was ich jetzt tun möchte, ist die Beschleunigung der Prozess der Eingabe, da für die meisten Anfragen, Der Taskflow ist ziemlich ähnlich. Ich habe bereits Tabellen für "TASK OWNER" und "TASK CATEGORIES" erstellt - beide bezogen auf meine primäre TASKS-Tabelle -, so dass ich die Dateneingabe für diese Felder standardisieren und zusätzlich filtern konnte ("Zeige mir alles, was der Mitarbeiter besitzt") . TASKS hat ein "NOTES" -Feld, damit ich den Eintrag individualisieren kann, ohne die Drop-Downs zu ändern. Es ist ein Fortschritt, aber ich verbringe immer noch zu viel Zeit damit, dasselbe hinzuzufügen - viele Aufgaben zu jeder neuen Anfrage, die ich einrichte.

Mit was ich in meinem Kopf gespielt habe, ist das Identifizieren von Aufgaben mit einer Art von Code, der sie mit einer Art von Anfrage assoziiert - dh ein Antrag eines Mitarbeiters auf Erstattung von Studiengebühren wird als "Anfragetyp 001" und alle identifiziert Aufgaben, die normalerweise mit einer Studienrückerstattung verbunden sind, haben ein Nachschlagefeld, das sie mit "001" verbindet - so dass, wenn ich ein Kästchen ankreuze oder "001 - Studienrückerstattung" aus einem Dropdown auf meinem Formular den 6 oder 8 "Standard auswähle "Aufgaben fallen automatisch in das TASKS-Unterformular, ABER sie sind NEUE Datensätze - nicht nur" Vorlagentasks ", die ich aus meinen TASK-KATEGORIEN abfrage. Ich möchte in der Lage sein, sie zu optimieren, zu bearbeiten, zu aktualisieren und sogar zu löschen, ohne irgendeine andere Anfrage zu beeinflussen.

Ich habe viele Informationen gefunden, die neue Datensätze über APPEND-Abfragen hinzufügen, aber es scheint sich darauf zu beschränken, EINEN Datensatz für jede "Transaktion" zu generieren, wenn das Sinn macht - jedes Mal, wenn die Abfrage ihren Wert findet und die Aktion ausführt , ein Datensatz wird generiert. Wie bekomme ich Zugriff, um einen Wert zu erkennen - Anforderungstyp - und erzeuge jede der Aufgaben, die mit diesem Anforderungstyp verknüpft sind, als neuen Datensatz in TASKS?

+1

Ja, Sie können. Aber um eine tatsächliche Antwort zu erhalten, lesen Sie bitte Folgendes: [Wie stelle ich eine gute SQL-Frage?] (Http://meta.stackoverflow.com/a/271056/3820271). – Andre

+0

Danke, lese jetzt. Tut mir leid, das hätte viel besser sein können. Meine Vorstellungskraft übersteigt meine Fähigkeiten und ich bin ungeduldig. :( – ThesaurusRex

Antwort

0

Der Benutzer wählt aus einer mehrspaltigen Combobox die Kategorie der Anfrage aus, z. B. "Erstattung von Studiengebühren". Versteckte Spalte der Combobox hat den Code der Kategorie und dies ist die gebundene Spalte, also ist dies der Wert der Combobox. Dann Code mehrere Datensätze zu speichern wäre wie:

CurrentDb.Execute "INSERT INTO Tasks(RequestID, TaskDesc) SELECT " & _ 
    Me.tbxReqID & " AS RID, TaskDesc FROM TasksCategories WHERE TaskCat = " & Me.cbxCategory 

Der eigentliche Trick heraus ist herauszufinden, was Ereignis in diesen Code zu setzen. Sollte es automatisch sein, nachdem ein Datenelement eingegeben wurde, oder sollte es ein Knopfklick sein? Dann müssen doppelte Einträge verhindert werden - was ist, wenn der Benutzer versehentlich erneut auf diese Schaltfläche klickt? (Dies kann durch eine zusammengesetzte Indexeinstellung in der Tabelle gehandhabt werden.) Außerdem muss der neue Master-Datensatz, der auf Anfrageformular erstellt wurde, zuerst an die Tabelle übergeben werden. Datensatz wird übergeben, wenn Tabelle/Abfrage/Formular geschlossen wird, zu einem anderen Datensatz verschoben wird oder Befehl zum Speichern ausgeführt wird.

Wie gezeigt, ist Ihre Anforderung sicherlich möglich, denken Sie daran: "Je benutzerfreundlicher, desto mehr Code".

Wenn Sie jetzt einen Code mit einem bestimmten Problem entwickeln, stellen Sie ihn zur Analyse bereit.

Verwandte Themen