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源碼網店

                        常見問答:

                        技術分類:

                        相關資源:

                        專欄作家

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