2016-11-13 1 views
0

Zuerst ein Zusammenhang: Ich bin es gewohnt, mit Excel zu arbeiten, und ich benutze es, um Produktionsrechner für mein Hobby zu bauen. Aufgrund einiger neuerer Probleme mit übermäßigen Datenmengen, die einer Berechnung bedürfen, habe ich schließlich aufgegeben und versucht, alles in Access zu schalten.Wie fillt man TableA-fieldA basierend auf tableA-fieldB automatisch, indem man die Daten von tableB holt?

Ich habe einige Lesungen getan, wie Zugang zu nutzen und auf der Grundlage, dass ich auf der folgenden entschieden:

1) I für die Regionen eine Temperaturtabelle haben (borealen, gemäßigten ...) mit spezifischen Produktions Ebene (1,2 ...)

2) einen Niederschlag I Tabelle für Regionen (nass, trocken ...) mit spezifischen Produktionsniveaus (1, 2 ...)

3) I dann habe eine Biom-Tabelle, in der ich die oben genannten Regionen mische, um meine Biome mit den folgenden Feldern zu erstellen:
- Biome.
- Niederschlag (Dropdown-Menü aus Tabelle 2).
- Temperatur (Dropdown-Menü aus Tabelle 1).
- Produktivitätsniveau (das sollte Niederschlagsproduktionsniveau von Tabelle 2 mal dem Temperaturerzeugungsniveau von Tabelle 1 sein).

FRAGE: Wie kann ich die Produktivitätsstufe in Tabelle 3 automatisch einstellen lassen?

HINWEIS 1: Ich weiß nicht, VBA und das ist mein erstes Mal mit Access arbeiten.

ANMERKUNG 2: Mir wurde gesagt, dass ich nur Tabelle 3 als Formular erstellen soll, aber ich denke nicht, dass das mit dem funktioniert, was ich tun möchte. Für den Fall, dass es relevant sein könnte (und ich sehe nicht das Offensichtliche), werde ich als nächstes mein erstes Ziel beim Aufbau dieser Datenbank beschreiben.

DATA ENTRY FORM: Alle unten aufgeführten Tabellen sind durch die Verkettung von Längen- und Breitengrad verbunden. Ich habe es nur teilweise (Hauptformular und Stadtunterformular) erfolgreich erstellt.
- Hauptformular basierend auf Tabelle mit 3 Feldern: Breite, Länge, Gelände.
- Teilformular basierend auf Tabelle mit 3 Feldern: Name der Stadt, Datum der Gründung, Datum des Einsturzes.
- 3 Teilformulare basierend auf 3 Tabellen, die jeweils einen Zeitraum darstellen, mit 2 Feldern: Biom (Biome ändern sich in einem bestimmten Bereich abhängig von Zeiträumen) und dessen Produktivität.

Nach dem Aufbau der Welt, koordiniert durch Koordinaten, werde ich dann zur nächsten Phase gehen - Erstellung von Tabellen, wo ich Pflanzen und Tiere, sowie Produkte aus ihnen und ihre Produktivität Ebenen identifizieren. Dies wird dann verwendet werden, um mein Wirtschaftssystem der Welt und eine Liste von Charakteren auf verschiedenen Wohlstandsebenen zu erstellen.

Ich kann diese Arbeit in Excel leicht machen (ohne VBA zu verwenden), aber die Menge der Daten wird die Datei töten, bevor ich es verwenden kann. Ich hoffe nur, dass ich es in Access schaffen werde - aber ich werde mit diesem Monster Schritt für Schritt fertig werden. Im Moment konzentriere ich mich nur auf die Frage, die ich oben gestellt habe. Danke für die Hilfe, die Sie mir geben können.

Antwort

1

Sie möchten einen Datenbank-Trigger, was bedeutet, dass die Eingabe von Daten in die Tabelle biome in den angegebenen Spalten die Berechnung für Ihre dritte Tabelle "auslöst". Access unterstützt keine Trigger, aber es gibt eine Problemumgehung. Sie verwenden ein Formular und erstellen Ereignisse für die Textfelder der auslösenden Attribute.

  • Erstellen Sie ein neues Formular basierend auf Ihrer Tabelle biome.Ich schlage vor, Sie erhalten die Auslöser, um zuerst zu arbeiten. Später können Sie es mit allen Unterformularen zu Ihrem Formular hinzufügen. Da Sie neu bei Access sind, möchten Sie nicht so schnell mit Unterformularen arbeiten, weil sie alles komplizierter machen, als es sein muss.
  • Sie benennen Sie die Textfelder Niederschlag, Temperatur, ProductivityLevel um so etwas wie txtPrecipitationtxtTemperaturetxtProdLevel
  • Sie den VBA-Editor öffnen und versuchen, den folgenden Code in das neue Formular:

.

'Trigger Events 
private sub txtTemperature_Change() 
call CalculateProductivityLevel() 
end sub 
private sub txtPrecipitation_Change() 
call CalculateProductivityLevel() 
end sub 
private sub txtTemperature_AfterUpdate() 
call CalculateProductivityLevel() 
end sub 
private sub txtPrecipitation_AfterUpdate() 
call CalculateProductivityLevel() 
end sub 

'Calculation Procedure 
private sub CalculateProductivityLevel() 
    'Check if both attributes have values. If not do not calculate anything 
    if (Len(me.txtTemperature & "") = 0) OR (Len(me.txtPreciperation & "") = 0) Then 
    exit sub 
    else 
    me.txtProdLevel = me.txtTemperature * me.txtTemperature 
end sub 

Hinweis

  • Die Triggerereignisse wird die calulcation Prozedur aufrufen, wenn es neue Einträge in den beiden Attribute oder neue Einträge gespeichert werden.
  • Stellen Sie sicher, den Code in der neuen Form Registerkarte Ihres VBA-Editor
  • ungetesteten Code so dort setzen könnten einige Fehler
+0

Danke, zu viel Arbeit im Büro sein hat mich angehalten dies davon ab, in Ich kann also immer noch nicht sagen, ob es irgendwelche Probleme mit dem Code gibt. In der Zwischenzeit wurde mir gesagt, dass berechnete Abfragen auch funktionieren könnten. Ich werde wahrscheinlich beide Möglichkeiten ausprobieren und sehen, was einfacher ist. –

Verwandte Themen