このExcelフィールドでMS-Excel式をシミュレートしようとしていました: A - StudyYears B - Inflation_Adjusted_Expenditures C - AnnualContribution D - ContributionIncrease E - InterestIncome F - RunningBalance
現在の Excel カーソル位置: 列 - F、行 - 3 数式: F2+E2+C2+B2
MS-Access SQL クエリに。別のテーブルから取得したフィールド。ただし、RunningBalance フィールドは、最初はテーブル tblParameter フィールド StartingBalance から取得されます。このクエリの次の RunningBalance レコードは、前のレコードから 4 つのフィールドを追加する必要があります。
循環参照はSQLクエリの問題であるため、このような関数を作成してみます。
'*************************************************************
' FUNCTION: PREV_RUNNINGBALANCE()
' PURPOSE: Retrieve a value from a field in the previous record.
' PARAMETERS:
' StartingBalance - Starting Running Balance which is given
' RefValue - ID value
' RETURN: The computed value for the 4 field mention located in the
' previous record.
' EXAMPLE:
' =Prev_RunningBalance(StudyYears, 404585)
'**************************************************************
Function Prev_RunningBalance(RefValue As Long, StartingBalance As Long)
Dim dbs As DAO.Database
Dim rsSQL As DAO.Recordset
Dim strSQL As String
Dim vRunningBalance As Integer
On Error GoTo Err_PrevRecVal
strSQL = "Select Inflation_Adjusted_Expenditures, AnnualContribution, InterestIncome, RunningBalance FROM GenerateFundingPlanData WHERE StudyYears = " & RefValue
Set dbs = CurrentDb
Set rsSQL = db.OpenRecordset(strSQL, dbOpenDynaset)
rsSQL.FindFirst "StudyYears = " & RefValue
If Not rsSQL.NoMatch Then
'Return 0
Prev_RunningBalance = 0
End If
If rsSQL.BOF Then
Prev_RunningBalance = 0
'Prev_RunningBalance = rsSQL![Inflation_Adjusted_Expenditures] + rsSQL![AnnualContribution] + rsSQL![InterestIncome] + StartingBalance
End If
Do While Not rsSQL.BOF
' Move to the previous record.
rsSQL.MovePrevious
' Sum the fields to get the RunningBalance
' RunningBalance = Inflation_Adjusted_Expenditures + AnnualContribution + InterestIncome + CurrentRunningBalance
Prev_RunningBalance = rsSQL![Inflation_Adjusted_Expenditures] + rsSQL![AnnualContribution] + rsSQL![InterestIncome] + rsSQL![RunningBalance]
Loop
'Close Connection
rsSQL.Close
Bye_PrevRecVal:
Set rsSQL = Nothing 'Deassign all objects.
Set dbs = Nothing
Exit Function
Err_PrevRecVal:
Resume Bye_PrevRecVal
End Function
関数を試した後、null の結果が得られます。これが私のクエリのサンプルです。
SELECT Prev_RunningBalance(a.StudyYears, 404585) as RunningBalance,
a.StudyYears FROM AnalysisYears a;
正しい機能を使用していますか?
指摘してください。ありがとうございました。