Friday 27 January 2017

Gleitender Durchschnittlicher Vba Zugriff

Avg Funktion Berechnet das arithmetische Mittel einer Menge von Werten, die in einem bestimmten Feld einer Abfrage enthalten sind. Der expr-Platzhalter repräsentiert einen Zeichenfolgenausdruck, der das Feld identifiziert, das die numerischen Daten enthält, die Sie durchschnittlich möchten, oder einen Ausdruck, der eine Berechnung unter Verwendung der Daten in diesem Feld ausführt. Operanden in expr können den Namen eines Tabellenfeldes, eine Konstante oder eine Funktion enthalten (die entweder intrinsisch oder benutzerdefiniert sein kann, aber nicht eine der anderen SQL-Aggregatfunktionen). Der durch Avg berechnete Durchschnitt ist das arithmetische Mittel (die Summe der Werte dividiert durch die Anzahl der Werte). Sie können die Verwendung von Avg. Um beispielsweise die durchschnittlichen Frachtkosten zu berechnen. Die Avg-Funktion enthält keine Null-Felder in der Berechnung. Sie können Avg in einem Abfrageausdruck und in der SQL-Eigenschaft eines QueryDef-Objekts oder beim Erstellen eines Recordset-Objekts basierend auf einer SQL-Abfrage. Moving durchschnittlichen Microsoft-Zugriff Letzte Änderung: 2012-05-10 Ich möchte eine Vielzahl von gleitenden Durchschnitten zu berechnen In Microsoft Access, wo ich eine Tabelle mit den Spalten Datum .. Transaktion Datum in der Microsoft-Beispiel unten Produktbeschreibung Preis verkauft. Währung in der Microsoft-Beispiel unten Microsoft gibt ein Beispiel für ein Modul an der Web-Adresse unten, aber es funktioniert nur einige der Zeit und hat auch Probleme, wenn ich einen neuen Monat starten .. alle von denen ich habe ein Problem mit meinen Daten, die Werden auf DateTime gesetzt Fomat Short Date Option Vergleich Datenbank Funktion MovAvg (currencyType, startDate, Periode als Integer) Dim rst Als DAO. Recordset Dim sqA Als String Dim ma Als Währung Dim n Integer sql quotSelect von table1 sql sql amp quotwhere currencyType quot Amp currencyType amp quotquote sql sql amp quotquot sql sql amp quotquot sql sql amp quittieren durch transactiondatequot Setzen rst CurrentDb. OpenRecordset (sq l) rst. MoveLast Für n 0 Zur Periode - 1 Wenn rst. BOF Dann MovAvg 0 Beenden Funktion Else ma ma rst. Fields (quotequot) End If rst. MovePrevious Nächstes n rst. Close MovAvg ma Periode Ich bin nicht in SQL geschult, kann aber verstehen, Teil von dem, was geschrieben und erstellen durch Ausschneiden und fügen Sie die vorgeschlagene Lösung und verwenden Sie es aber Wie ich schon sagte, es funktioniert nur ein Teil der Zeit erscheinen kurzfristig gleitende Durchschnitte (sagen wir 5 Tage), um Problem zu schlagen, wie das Datum fällt auf den 12. eines Monats die vorherigen 5 Tage gleitenden Durchschnitt fängt an, Sie bewegen sich von zweistelligen bis einstelligen Daten etwas funktioniert nicht richtig Ich habe auch Problem, wenn meine Periode überschreitet etwa 23 Tage, wie ich immer eine Null am 1. des Monats und manchmal die 2. Jede Hilfe beim Verständnis, warum ich diese Probleme sehr haben Geschätzt Bitte korrigieren, was Sie zu tun versuchen, und arbeiten ein numerisches Beispiel. Posting einer Beispiel-MDB-Datei wäre am besten von allen. In jedem Fall sind Sie wahrscheinlich nicht brauchen VBA, um einen rollenden Durchschnitt erhalten eine normale SQL-Anweisung wird wahrscheinlich den Job zu tun, und schneller. Hier sind zwei schnelle Beispiele, wobei die angehängte Datei: 5 Tage rollenden Durchschnitt, nach Produkt, für die alle Tage einen durchschnittlichen durchschnittlichen Wert: 5 Tage rollenden Durchschnitt, nach Produkt, für Rolling-Durchschnitt ist Null, wenn es weniger als 5 Tage: Angehängte ist eine Datei, die ich versuchte zu arbeiten .. Ich bin aus Australien so meine Termine 12112010 bedeuten 12. November 2010 usw. Im Wesentlichen für jedes Datum sagen 12 November, 11112010 usw. Ich versuche, einen gleitenden Durchschnitt für die Codes in Produkt-Typ mit zu berechnen Die Preise in Rate ie Produktart TAH hat einen Preis für 12112010 von 7.29 und auf 11112010 von 7.36 so ein 2 Tage Durchschnitt wäre 7,32 und für 11112010 wäre es 7.345 als Preis auf 10112010 ist 7.33 Ich bin daran interessiert, mehrere haben können Gleitende Durchschnittswerte wie 15, 30, 60 Tage, die Tage im Unterschied zu Kalendertagen aufgelistet sind, da es keine Daten für Wochenendtage gibt und wahrscheinlich eine Tabellenabfrage verwenden würden, um sie an eine andere Tabelle auszugeben. Ich möchte in der Lage, die Zeit der gleitenden Durchschnitte zu variieren Ich hoffe, das ist ein wenig klarer Insgesamt: Level 6 Aktiv vor 3 Tagen Für Access SQL müssen Sie die Daten in US-Format konvertieren. ZB mmddyyyy siehe mvps. orgaccessqueriesqry0009.htm Backup - und Recovery-Lösungen zum Schutz all Ihrer PCs amp Mac vor Ort oder an entfernten Standorten. Acronis sichert den gesamten PC oder Mac mit patentierter zuverlässiger Festplatten-Imaging-Technologie und Sie werden in der Lage sein, Arbeitsplätze auf eine neue, unähnliche Hardware in wenigen Minuten wiederherzustellen. Moving Average Calculation Moving Durchschnittliche Berechnung Moving Average Calculation Ich versuche, einen gleitenden Durchschnitt für eine Serie zu berechnen Der Daten. Ich möchte den gleitenden Durchschnitt für jeden Punkt innerhalb der Daten generieren, um in einem Diagramm zu zeigen. Wie auch immer, unten ist ein Beispiel von MS Support. Ich habe den Brief gefolgt, aber mir gibt nicht einen gleitenden Durchschnitt. Es wiederholt den gleichen Datenpunkt über und über (der erste Datenpunkt). So glaube ich nicht, dass die Funktion das startdate in der MyRST. Seek Linie findet, also gerade die Rückgabe des ersten Datenpunktes. Schließlich (vielleicht macht dies wirklich einfach) Ich bin verwirrt darüber, wie die Indizes funktionieren. Ich dachte, Sie könnten nur einen Primärschlüssel haben, aber anscheinend können Sie mehrere Feldbeschränkungen erstellen. Ich habe versucht, dies mit der folgenden Datendefinitionsabfrage zu tun: ALTER TABLE Table1 ADD CONSTRAINT NoDupes UNIQUE (CurrencyType, TransactionDate) Sorry über die Länge dieses Beitrags. Ich schätze Ihre Hilfe. Die folgende Beispielfunktion berechnet Bewegungsdurchschnitte basierend auf einer Tabelle mit einem Mehrfachfeld-Primärschlüssel. Für dieses Beispiel werden die wöchentlichen Werte der Fremdwährungen verwendet. Gehen Sie folgendermaßen vor, um die Beispielfunktion zu erstellen: Erstellen Sie die folgende Tabelle, und speichern Sie es als Table1: Tabelle: Table1 --------------------------- -------------- Feldname: CurrencyType Primärschlüssel Datentyp: Text Feldgröße: 25 Feldname: TransactionDate Primärschlüssel Datentyp: DateTime Format: Kurzdatum Feldname: Datentyp: Währung Dezimalstellen: 4 Zeigen Sie die Tabelle in der Datenblattansicht an und geben Sie die folgenden Werte ein: CurrencyType TransactionDate Rate ------------------------------- ------------- Yen 8693 0.0079 Yen 81393 0.0082 Yen 82093 0.0085 Yen 82793 0.0088 Yen 9393 0.0091 Mark 8693 0.5600 Mark 81393 0.5700 Mark 82093 0.5800 Mark 82793 0.5900 Mark 9393 0.6000 Öffnen Sie ein neues Modul und geben Sie die folgende Funktionen: Funktion MAvgs (Perioden As Integer, Startdatum, Type-Name) Dim MyDB Als DATABASE, MyRST Als Recordset, MySum As Double Dim i, Satz x MyDB CurrentDb () Set MyRST MyDB. OpenRecordset (Tabelle 1) On Error Resume Next MyRST. Index PrimaryKey x Periods - 1 ReDim Store (x) MySum 0 Für i 0 Zu x MyRST. MoveFirst MyRST. Seek, TypeName, StartDate Diese beiden Variablen sollten in der gleichen Reihenfolge sein wie die Primärschlüsselfelder in Ihrer Tabelle. Store (i) MyRSTRate If i lt x Then StartDate StartDate - 7 Die 7 hier nimmt wöchentliche Daten 1 für Tagesdaten an. Wenn StartDate lt 8693 Dann wird MAvgs Null: Exit Function 8693 durch das früheste Datum der Daten in Ihrer Tabelle ersetzt. MySum-Speicher (i) MySum Next i MAvgs MySum-Perioden MyRST. Close-Endfunktion Erstellen Sie die folgende Abfrage auf der Grundlage der Tabelle1-Tabelle: Query: Query1 --------------------- ---------------------------------- Feld: CurrencyType Feld: TransactionDate Feld: Ratenfeld: Expr1: MAvgs (3 , TransactionDate, CurrencyType) HINWEIS: Diese Abfrage erzeugt einen dreiwöchigen gleitenden Durchschnitt der Rate-Daten. Um einen längeren oder kürzeren gleitenden Durchschnitt zu berechnen, ändern Sie die Zahl 3 in der Spalte Ausdrücke 1 von Spalte auf den Wert, den Sie berechnen möchten. Führen Sie die Abfrage aus. Beachten Sie, dass Sie die folgenden drei Wochen gleitenden Durchschnitt für jede Währung sehen. Ein Null-Wert zeigt an, dass nicht genug frühere Werte vorhanden sind, um diesen Wochenmittelwert zu berechnen. CurrencyType Transaction Rate Expr1 Mark 080.693 0,5600 Mark 081.393 0,5700 Mark 082.093 0,5800 0,57 Mark 082.793 0,5900 0,58 Mark 090.393 0.6000 0.59 Yen 080.693 0,0079 Yen 081.393 0,0082 Yen 082.093 0,0085 0,0082 Yen 082.793 0,0088 0,0085 Yen 090.393 0,0091 0,0088 RE: Moving Average Berechnung dhookom (Programmierer) 28 Jun 10 21:15 Wie alt ist dieser Code Es doesnt explizit verwenden DAO und nicht erwähnen, dass dies nicht mit verknüpften Tabellen arbeiten. Dim MyDB als DAO. Database, MyRST als DAO. Recordset. Ich würde eine Unterabfrage anstatt ein Re-Cord-Set verwenden. Es könnte etwa so aussehen: SELECT CurrencyType, Transaction, Rate (SELECT Avg (Rate) FROM Tabelle1 B WHERE A. CurrencyType B. CurrencyType UND A. TransactionDate ZWISCHEN B. TransactionDate - 14 UND B. TransactionDate) FROM Tabelle1 A RE: Umzug Durchschnittliche Berechnung Das ist wirklich perfekt. Ich schätze deine Hilfe sehr. Allerdings ist der Code, den Sie gaben die Berechnung der vorwärts 14 Tage gleitenden Durchschnitt (Platzierung der gleitenden Durchschnitt in den Datensatz für Tag 1 des Durchschnitts, wo ich wollte, dass es ein rückwärts gerichteter Durchschnitt, platziert in Rekord 14). Ich änderte nur etwas zu den folgenden und es scheint zu funktionieren SELECT A. CurrencyType, A. TransactionDate, A. Rate, (SELECT Avg (Rate) FROM Tabelle1 B WHERE A. CurrencyType B. CurrencyType UND B. TransactionDate ZWISCHEN A. TransactionDate - 14 AND A. TransactionDate) AS Expr1 FROM Tabelle1 AS Wie Sie sehen können, war alles, was ich tat Austausch A für B in der where-Klausel. Dies ist eine wirklich große Hilfe für mich und ich schätze es wirklich. Ich habe nicht gesehen Codierung wie diese vor, und ehrlich, ich nicht wirklich verstehen. Ich weiß nicht, wie die SQL versteht, was B und A sind. Ich gehe davon aus, dass sie eine Art von alternativen Verweis auf Tabelle1 erstellen. Wenn Sie irgendeine Anleitung geben können, würde ich es wirklich schätzen. Auch, vielleicht ein Hinweis auf Material, das ich sehen konnte bin ich immer sehr aufgeregt, um etwas Neues über VBASQL lernen, und ich wirklich schätzen Ihre Hilfe RE: Moving Average Calculation PHV (MIS) 29 Jun 10 12:22 versteht, was B und A Sind sie alias es RE: Moving Average Calculation Vielen Dank, PHV. Es macht besser Sinn bereits RE: Moving Average Berechnung joshery420 (TechnicalUser) 6 Jul 10 15:06 Wow, nie sah SQL-Sicht vor. Äußerst hilfreich. Ich versuche, diesen Code zu bekommen, um in meinem eigenen Datensatz zu funktionieren und ich bin auf eine bestimmte Frage geheilt. Pd2004, nicht sicher, ob der neue Unterabfrage-Code arbeitete die gleiche wie Ihre alten VBA-Code oder nicht, aber mit meinen Daten zeigt es immer noch den gleitenden Durchschnitt, auch wenn es arent genug Tage, um die Länge eines durchschnittlichen erstellen. z. B. Wenn Im einen 7-Tage-Rolling-Durchschnitt durchführt, zeigt Tag 1 dieselben Daten in der Spalte 7DayAvg wie in der Tagesdatenspalte an. Tag 2 würde zeigen, den Durchschnitt der Tage 1 und 2, etc. Einer von euch Jungs wissen, wie man dies durch Zufall zu beheben Auch danke für die große Code-Tipp PHV. RE: Verschieben der Mittelwertberechnung joshery420 (TechnicalUser) 6 Jul 10 15:08 Woops, gemeint zum Dank dhookom für den Code-Tipp, nicht PHV. Aber hey, danke euch beiden. XD RE: Moving Average Calculation Ich werde die besten Lösungen für die Fachleute hier verlassen, aber Sie können in meinem ursprünglichen Post sehen, wie das Microsoft-Hilfe-Beispiel versucht, das zu behandeln. Hier ist der Code: Wenn StartDate lt 8693 Dann MAvgs Null: Exit Function 8693 wird durch das früheste Datum der Daten in Ihrer Tabelle ersetzt. Sie sind nur verlassen die Funktion, wenn das Datum nicht die Kriterien passt. Ich weiß nicht, ob Sie so etwas in den Alias-Code von dhookem zur Verfügung stellen könnte. Ich dont wie ihre Art, dies zu behandeln, und ich vermute, dass dhookem wird eine viel elegantere Lösung. Für meine Zwecke die Frage, die Sie beschreiben, ist kein Problem, aber ich werde daran interessiert, alle Lösungen zu sehen. RE: Moving Average Berechnung Dhookom (Programmer) 6 Jul 10 17:05 Sie könnten versuchen, mit IIf (), um für eine Zählung der Anzahl der Datensätze zu testen. Achtung: es wird ein nicht getestetes Notepad-Code ausgeführt: SELECT A. CurrencyType, A. TransactionDate, A. Rate, IIF (SELECT Count (Rate) FROM Tabelle1 C WHERE A. CurrencyType C. CurrencyType AND C. TransactionDate BETWEEN A. TransactionDate - 14 AND A. TransactionDate), NULL) AS Expr1 FROM Tabelle 1 AS A RE: Gleitende Durchschnittsberechnung


No comments:

Post a Comment