SELECT prj.ProjectKey, prj.ProjectName, prj.TotalHours, prj.PercentDone, prj.PriorityKey, pri.PriorityName, prj.StatusKey, pst.PrjStatusCodeName, prj.ManagerKey, emp.FirstName + ' ' + emp.LastName AS AssignedTo, prj.EstEndDate, mod.ModuleKey, mod.ModuleName, mod.ModuleCode, mod.ModuleTypeKey, mt.ModuleTypeName, tsk.TaskKey, tsk.TaskName, tsk.TotalHours AS TaskTotalHours, tsk.PercentDone AS TaskPercentDone, tsk.PriorityKey AS TaskPriorityKey, tpr.PriorityName AS TaskPriority, tsk.AssignedEmpKey AS TaskAssignedToKey, temp.FirstName + ' ' + temp.LastName AS TaskAssignedTo FROM bm_Projects prj FULL JOIN bm_Employees emp ON emp.EmployeeKey = prj.ManagerKey FULL JOIN bm_Priorities pri ON pri.PriorityKey = prj.PriorityKey FULL JOIN bm_ProjectStatusCodes pst ON pst.PrjStatusCodeKey = prj.StatusKey FULL JOIN bm_Modules mod ON mod.ProjectKey = prj.ProjectKey FULL JOIN bm_ModuleTypes mt ON mt.ModuleTypeKey = mod.ModuleTypeKey FULL JOIN bm_Tasks tsk ON tsk.ModuleKey = mod.ModuleKey FULL JOIN bm_Priorities tpr ON tpr.PriorityKey = tsk.PriorityKey FULL JOIN bm_Employees temp ON temp.EmployeeKey = tsk.AssignedEmpKey WHERE prj.AppKey = @AppKeyI don't understand how ADO can make changes to the underlying table. I mean, in the resulting DS, assume I change the value of
>oParam.ParameterName = "@" + oColParam.sSrcColName;
>
>>>static void Main(string[] args) >>{ >> DataAccess oDataAccess = new DataAccess(); >> >> oDataAccess.Provider = DataAccess.ProviderType.SQL; >> oDataAccess.ConnectionString = sConnString; >> >> >> // Paramaters collection object >> DataAccess.ProcedureParams oParams = new DataAccess.ProcedureParams(); >> oParams.sProcedureName = "bm_GetAppOverview"; >> >> // Create param objects and add to the collection >> DataAccess.Param oAppKey = new DataAccess.Param(); >> oAppKey.Direction = System.Data.ParameterDirection.Input; >> oAppKey.iSize = 0; >> oAppKey.sSrcColName = "AppKey"; >> oAppKey.value = 0; >> >> oParams.AddParam(oAppKey); >> >> // Call into the data access class & run the sproc >> DataSet oData = oDataAccess.ExecuteStoredProc(oParams); >>} >>>>
>>public DataSet ExecuteStoredProc(ProcedureParams oParams) >>{ >> DataSet oDataSet = new DataSet();; >> >> IDbCommand oCommand = _GetCommand(oParams.sProcedureName); >> >> if (oCommand != null) >> { >> oCommand.CommandType = CommandType.StoredProcedure; >> >> foreach (Param oColParam in oParams.Params) >> { >> SqlParameter oParam = new SqlParameter(); >> >> oParam.DbType = oColParam.Type; >> oParam.Direction = oColParam.Direction; >> oParam.SourceColumn = oColParam.sSrcColName; >> oParam.Size = oColParam.iSize; >> oParam.Value = oColParam.value; >> >> oCommand.Parameters.Add(oParam); >> } >> >> IDbDataAdapter oAdapter = _GetDataAdapter(oParams.sProcedureName); >> >> if (oAdapter != null) >> { >> >> oAdapter.SelectCommand = oCommand; >> >> try >> { >> oAdapter.Fill(oDataSet); >> >> } >> catch (SqlException e) >> { >> // Removed for brevity >> } >> } >> } >> return oDataSet; >> >>>>