Dataset Merge Problem
I'm developing an application using XML Web Reference, SQL Server database, and Visual Studio.net 2003.
I have a web form which users populate with data (or change data) and click a button to save the data to the database. I use a stored procedure to accomplish this and return the dataset back to the page to re-populate the dataset with the corrected data.
My problem is that the data gets saved properly to the database, but does not get "Merged" back into the dataset properly -- the old data persists.
Here's some code from the .asmx file:
<WebMethod(Description:="This XML Web service updates Employees " _
& "from a supplied EID")> _
Public Function UpdateEIDEmp(ByVal iEID As Integer, ByVal iLName As String, _
ByVal iFName As String, ByVal iJob As String, ByVal iSuper As Integer, _
ByVal iPhone As String, ByVal iPID As String, ByVal iEndda As String, _
ByVal iBegda As String, ByVal iuserChange As String, ByVal idtChange As String) As DataSet
Dim daEIDEmp As SqlDataAdapter
Dim dsEmp1 As New dsEmp
Dim workParam As SqlParameter = Nothing
'set up the stored procedure
daEIDEmp = _
New SqlDataAdapter("sp_UpdateEmp", SqlConnection1)
daEIDEmp.SelectCommand.CommandType = _
CommandType.StoredProcedure
'add the EID input parameter
workParam = New SqlParameter("@EID", _
System.Data.SqlDbType.Int)
workParam.Direction = ParameterDirection.Input
workParam.Value = iEID
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@PID", _
System.Data.SqlDbType.Int)
workParam.Direction = ParameterDirection.Input
workParam.Value = iPID
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@Name_F", _
System.Data.SqlDbType.NVarChar, 20)
workParam.Direction = ParameterDirection.Input
workParam.Value = iFName
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@Name_L", _
System.Data.SqlDbType.NVarChar, 20)
workParam.Direction = ParameterDirection.Input
workParam.Value = iLName
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@Job", _
System.Data.SqlDbType.NVarChar, 20)
workParam.Direction = ParameterDirection.Input
workParam.Value = iJob
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@Begda", _
System.Data.SqlDbType.DateTime)
workParam.Direction = ParameterDirection.Input
workParam.Value = iBegda
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@Endda", _
System.Data.SqlDbType.DateTime)
workParam.Direction = ParameterDirection.Input
workParam.Value = iEndda
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@super", _
System.Data.SqlDbType.Int)
workParam.Direction = ParameterDirection.Input
workParam.Value = iSuper
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@PhoneLoc", _
System.Data.SqlDbType.NVarChar, 25)
workParam.Direction = ParameterDirection.Input
workParam.Value = iPhone
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@userChange", _
System.Data.SqlDbType.NVarChar, 12)
workParam.Direction = ParameterDirection.Input
workParam.Value = iuserChange
daEIDEmp.SelectCommand.Parameters.Add(workParam)
workParam = New SqlParameter("@dtChange", _
System.Data.SqlDbType.DateTime)
workParam.Direction = ParameterDirection.Input
workParam.Value = idtChange
daEIDEmp.SelectCommand.Parameters.Add(workParam)
'run the stored procedure and fill a dataset
daEIDEmp.Fill(dsEmp1.t_Emp.DataSet, "sp_EmpByEID")
'daEIDEmp.Fill(dtEmp, "sp_EmpByEID")
'close the connection
'conn.Close()
Return dsEmp1
End Function
Then, the page from which this function was called:
DsEmp2.Merge(ws.UpdateEIDEmp(iEID, iLName, iFName, iJob, iSuper, _
iPhone, iPID, iEndda, iBegda, iuserChange, idtChange))
DsEmp2.AcceptChanges()
Running debugger, I find that there are 2 tables in the dataset, dsEmp1, generated in the .asmx page. Then, after the merge statement in the calling page, there are 2 tables in the dataset, dsEmp2, when before the merge, there was only one. BTW, they are both copies of the same dataset, dsEmp.
How can I force the dataset in the .asmx into the proper table?
Joe
|