Access快速開發基礎教程
網站公告
·Access專家課堂QQ群號:151711184    ·Access快速開發平臺下載地址及教程    ·歡迎加入Access專家課堂微信群!    ·如何快速搜索本站文章|示例|資料    
您的位置: 首頁 > 技術文章 > Access數據庫-模塊/函數/VBA

Microsoft Access (Var 和 VarP SQL)

時 間:2022-08-13 08:54:54
作 者:楊雪   ID:42182  城市:南京
摘 要:適用于: Access 2013 | Access 2016

返回以包含在查詢的指定字段內的一組值為總體樣本或總體樣本抽樣的方差的估計值。
正 文:

語   法:
Var (expr)
VarP (expr)

expr 占位符代表一個字符串表達式(它標識了包含要計算的數值數據的字段)或表示使用該字段的數據執行計算的表達式。 expr 中的操作數可以包括表字段、常量或者函數(可以是固有函數或用戶定義的函數,但不能是其他 SQL 聚合函數)的名稱。

備   注:
VarP 函數計算樣本總體,Var 函數計算樣本總體抽樣。
如果基礎查詢中包含了兩個以下個記錄,那么 Var 和 VarP 函數返回 Null 值,這表示無法計算方差。
在 查詢表達式 或 SQL 語句中使用 Var 和 VarP 函數。

示   例:
以下示例使用 orders 表估算發往 United Kingdom 的訂單的運費的偏差。
以下示例調用 EnumFields 過程,您可以在 Select 語句示例中找到該過程。

Sub VarX() 
 
    Dim dbs As Database, rst As Recordset 
 
    ' 在你的電腦上修改這一行包含Northwind的路徑
    Set dbs = OpenDatabase("Northwind.mdb") 
 
    ' 訂單被運往英國,計算運費的方差  
    Set rst = dbs.OpenRecordset("Select " _ 
        & "Var(Freight) " _ 
        & "AS [UK Freight Variance] " _ 
        & "FROM orders Where ShipCountry = 'UK';") 
 
    ' 填充記錄集 
    rst.MoveLast 
     
    ' 調用 EnumFields 打印記錄集。 傳遞 Recordset 對象和所需字段寬度
    EnumFields rst, 20 
     
    Debug.Print 
     
    Set rst = dbs.OpenRecordset("Select " _ 
        & "VarP(Freight) " _ 
        & "AS [UK Freight VarianceP] " _ 
        & "FROM orders Where ShipCountry = 'UK';") 
 
    ' 填充記錄集。 
    rst.MoveLast 
    EnumFields rst, 20 
 
    dbs.Close 
 
End Sub 
Sub EnumFields(rst As Recordset, intFldLen As Integer) 
     
        Dim lngRecords As Long, lngFields As Long 
        Dim lngRecCount As Long, lngFldCount As Long 
        Dim strTitle As String, strTemp As String 
     
        ' 將 lngRecords 變量設置為記錄集中的記錄
        lngRecords = rst.RecordCount 
     
        '將 lngFields 變量設置為記錄集中的字段。
        lngFields = rst.Fields.Count 
     
        Debug.Print "There are " & lngRecords _ 
            & " records containing " & lngFields _ 
            & " fields in the recordset." 
        Debug.Print 
     
        ' 形成一個字符串來打印列標題. 
        strTitle = "Record  " 
        For lngFldCount = 0 To lngFields - 1 
            strTitle = strTitle _ 
            & Left(rst.Fields(lngFldCount).Name _ 
            & Space(intFldLen), intFldLen) 
        Next lngFldCount     
     
        ' 打印列標題. 
        Debug.Print strTitle 
        Debug.Print 
     
        rst.MoveFirst 
     
        For lngRecCount = 0 To lngRecords - 1 
            Debug.Print Right(Space(6) & _ 
                Str(lngRecCount), 6) & "  "; 
     
            For lngFldCount = 0 To lngFields - 1 
                ' 檢查空值. 
                If IsNull(rst.Fields(lngFldCount)) Then 
                    strTemp = "" 
                Else 
                    ' 將 strTemp 設置為字段內容.  
                    Select Case _ 
                        rst.Fields(lngFldCount).Type 
                        Case 11 
                            strTemp = "" 
                        Case dbText, dbMemo 
                            strTemp = _ 
                                rst.Fields(lngFldCount) 
                        Case Else 
                            strTemp = _ 
                                str(rst.Fields(lngFldCount)) 
                    End Select 
                End If 
     
                Debug.Print Left(strTemp _  
                    & Space(intFldLen), intFldLen); 
            Next lngFldCount 
     
            Debug.Print 
     
            rst.MoveNext 
     
        Next lngRecCount 
     
    End Sub


Access軟件網QQ交流群 (群號:115180141)       Access源碼網店

常見問答:

技術分類:

相關資源:

專欄作家

關于我們 | 服務條款 | 在線投稿 | 友情鏈接 | 網站統計 | 網站幫助