Accessで次のようなクエリを作成しました...
SELECT project_master.ProjectID, project_master.OracleNum, project_master.BudgetYear, project_master.ProjectNum, project_master.Description, project_master.Description, project_master.Location, project_master.Region, project_master.ContactOwner, project_master.ContactDesigner, project_master.ProjectPriority, project_master.StartDate, project_master.InitialCloseDate, project_master.CurrentBonus, project_master.CurrentQty, project_master.TotalQty, project_master.TotalQty, project_master.SpendingYTD, project_master.SpendingLTD, project_master.SpendingAnnualBudget, project_master.SpendingForecast, project_master.SpendingMinimumForecast, project_master.SpendingRemainingCommitted, project_master.SpendingSaveOver, project_master.SpendingPushPull, project_master.IsCanceled, project_master.UserComments, project_master.tmp_reporting_selected, project_master.rep_header, project_master.rep_budget, project_master.rep_work_completed, project_master.rep_work_planned_completed, project_master.rep_variance_reason, project_master.rep_work_to_complete, project_master.rep_cutovers, project_master.rep_issues_resolution, project_master.rep_variance_reason1, project_master.rep_work_to_complete1, project_master.rep_cutovers1, project_master.rep_issues_resolution1 FROM project_master WHERE (((project_master.ProjectID)=[projectID]));
今、私はAccessにまったく精通しておらず、ストアドプロシージャを作成しようとしていますが、そうするためのオプションが表示されません。私が作成したこのクエリはprojectIDパラメーターを取得しているようですが、VB.NETで呼び出してパラメーターを渡そうとすると、必要なレコードではなく、テーブル内のすべてのレコードを取得します。
Public Shared Function GetProjectByID(ByVal projectID As Integer) As DataTable
Dim paramaterList As New List(Of DataParameter)
paramaterList.Add(New DataParameter("@projectID", projectID, ParameterDirection.Input, OleDb.OleDbType.Integer))
Return DAL.GetDataTableUsingReader("get_project_by_id", paramaterList)
End Function
Public Shared Function Create(ByVal projectID As Integer) As Project
If projectID < 1 Then
Throw New ArgumentException("The project ID is invalid.")
End If
Dim dt As DataTable = ProjectSQL.GetProjectByID(projectID)
If dt.Rows.Count < 1 Then
Throw New DataException("No project record found by the provided ID.")
End If
Return Repackage(dt)(0)
End Function
Friend Shared Function Repackage(ByVal dt As DataTable) As List(Of Project)
Dim projectList As New List(Of Project)
For i As Integer = 0 To dt.Rows.Count - 1
Dim p As New Project
Dim row As DataRow = dt.Rows(i)
p.ProjectID = Convert.ToInt32(row("ProjectID"))
p.OracleNum = Convert.ToString(row("OracleNum"))
p.BudgetYear = Convert.ToInt32(row("BudgetYear"))
'etc...
projectList.Add(p)
Next
Return projectList
End Function
基本的に、Create()メソッドを呼び出して整数を渡しますが、1つのレコードだけでなく、すべてのレコードが返されます。