2015-04-07 147 views
0

我很新的使用訪問,不知道有多少的它能夠的功能,所以我的問題可能不是最清晰的,但在這裏不用...數據趨勢

我我試圖設計一個數據庫來統計監視輸入的值。即我有一個數據輸入表格,控制圖表和表格都包含數字的字段。

我想要的功能之一是它能夠標記數據中的趨勢。 例如:如果特定字段中的最後5個值趨向上(最後一個值比先前更高,比先前更高,等等)或向下,那麼我想要出現彩色文本框(或者其他的東西)。

我有一個思想,我知道我會怎麼做在Excel中:我將引用特定值(細胞),並有像一些代碼:

If .Cells(iRow, 1).Value > .Cells(iRow - 1, 1) 
     And .Cells(iRow - 1, 1).Value > .Cells(iRow - 2, 1) etc etc Then 
Sheets("Box1").Range("AA15").Interior.ColorIndex = 44 
Trends = "3 consecutive points increasing" 

我真的不知道很多關於Access的工作方式,但我看起來可以管理的是編寫一個查詢,選擇最近輸入的5條記錄......然後卡住了!

有沒有辦法在SQL中編寫一些可以做到這一點的東西?任何人都可以給我一些建議!或者讓我指出正確的方向,使一些技術成爲可能?

謝謝。

我正在使用的數據表具有列出的字段:ID,批次,日期,字段4,字段5,字段6。

所有是數字。

我想知道是否有在過去的5條趨勢字段4,5,6和7

跨張貼在:http://www.access-programmers.co.uk/forums/showthread.php?p=1421356#post1421356

回答

0

一個可能的解決方案是採用運行計數。這是使用嵌套的subquery完成的,其中源表與自身進行比較(注意不同的別名 - t1t2)。

但是,這實際上取決於你想如何連續排列字段。在下面,我假設你想通過有序日期爲每個ID找到增加的字段值。或者,您可以比較批次按日期。

SELECT t1.ID, t1.[Date], t1.Field4, 

    (SELECT Count(*) 
    FROM SrcTable As t2 
    WHERE t1.Field4 > t2.Field4 AND t1.[Date] > t2.[Date] 
     AND t1.ID = t2.ID) As RowCount 

FROM SrcTable As t1 
ORDER BY t1.[Date]; 

此查詢保存爲一個存儲查詢或VBA記錄,然後找到具有爲5的行數,該ID將不得不5個連續增加的字段值的ID。另外,以上僅適用於Field4。複製其他字段。並將SrcTable修改爲實際的表名。

最後,雖然我不知道用戶界面的外觀如何,但可以有條件地設置文本框的格式。您可以在窗體的設計視圖/格式選項卡(功能區)下選擇您的文本框控件。表達式生成器設置爲5 DLookup值:

Expression Is: 
    DLookUp("RowCount", "SavedQuery", "ID =" & Forms!yourformname!ID") >= 5 

DLookUp是一個家庭的功能中的訪問功能:DSUM,DAVG,DCOUNT,DFirst,DLast。它們允許根據標準在任何數據庫的存儲表和查詢中進行快速字段值搜索。您可以在SQL腳本,VBA代碼和Expression構建器中使用它們。

一個附加項目:當您編輯現有或輸入新數據時,表單上的條件格式不會立即更新,因爲DLookUp僅在窗體打開時計算。在教科書和形式的AfterInsert事件的更新後事件包括以下VBA哪些因素在新的數據值:

DoCmd.RunCommand acSaveRecord 
Me!textboxname.Requery 

Requery是重新計算控制源,行源,或各種對象的記錄源的方法。

+0

非常感謝您的支持!非常感激。我會在今晚晚些時候嘗試這些,並讓你知道我如何繼續。 – MissW

+0

第一位工作完美。但是,在條件格式化時,表達式會給出錯誤: ''您輸入的表達式包含無效語法。 您可能已經進入了一個沒有逗號前面的值或標識符。」 曾與幾件事情一齣戲,但不能看到那麼它的工作只需在開始拆卸=可能是什麼問題? – MissW

+0

確定。 ... 但現在我已經注意到行計數似乎並沒有改變,即使當我輸入多個數據值增加? – MissW

0

所以對於任何人誰是閱讀,並會找到一個答案,這個有用...

我做了以下突出的數據,我收集任何趨勢,我不能讓別的工作:

Me.Trend1 = DLookup("[Field]", "Table", "[ID]=Forms![Formname]![Subformname].Form.[ID]") 
Me.Trend2 = DLookup("[Field]", "Table", "[ID]=Forms![Formname]![Subformname].Form.[ID]-1") 
Me.Trend3 = DLookup("[Field]", "Table", "[ID]=Forms![Formname]![Subformname].Form.[ID]-2") 
etc. 

我然後用於下一:

首先,我通過具有在我的形式的負載特性在下面的代碼創建包含我感興趣的是(在我的表中的最後5個值)的值的文本框比特的代碼比較值互相有條件地格式化我的文本框:

If Me.Trend1.Value > Me.Trend2.Value And Me.Trend2.Value > Me.Trend3.Value And Me.Trend3.Value > Me.Trend4.Value And Me.Trend4.Value > Me.Trend5.Value _ 
Or Me.Trend1.Value < Me.Trend2.Value And Me.Trend2.Value < Me.Trend3.Value And Me.Trend3.Value < Me.Trend4.Value And Me.Trend4.Value < Me.Trend5.Value _ 
Or Me.Trend1.Value > [Value] And Me.Trend2.Value > [Value] And Me.Trend3.Value > [Value] And Me.Trend4.Value > [Value] And Me.Trend5.Value > [Value] _ 
Or Me.Trend1.Value < [Value] And Me.Trend2.Value < [Value] And Me.Trend3.Value < [Value] And Me.Trend4.Value < [Value] And Me.Trend5.Value < [Value] Then 


     Me.textbox.BackColor = vbRed 
      Else: Me.textbox.BackColor = 5753088 

End If