1
我在訪問看起來像這樣創建的查詢......存儲過程/參數化查詢在訪問,並傳遞參數
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]));
現在我不熟悉的任何訪問,我想做一個存儲過程,但我沒有看到任何選擇這樣做。我創建的這個查詢似乎採用了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()方法,並傳遞一個整數,但我得到恢復,而不只是一個記錄所有記錄。
作品,謝謝你的幫助! –