I am trying to use a stored procedure and it seems to be giving me a error - I think it doesn't like the uniqueidentifier. I have included the error, stored procedure, and code behind that calls the stored procedure.
Thanks for any help on this!
This is the error I get:
System.ArgumentException: No mapping exists from object type System.Web.UI.WebControls.TextBox to a known
managed provider native type. at System.Data.SqlClient.MetaType.GetMetaTypeFromValue(Type dataType, Object value,
Boolean inferLen) at System.Data.SqlClient.SqlParameter.GetMetaTypeOnly() at
System.Data.SqlClient.SqlParameter.Validate(Int32 index) at System.Data.SqlClient.SqlCommand.BuildParamList(TdsParser
parser, SqlParameterCollection parameters) at System.Data.SqlClient.SqlCommand.BuildExecuteSql(CommandBehavior
behavior, String commandText, SqlParameterCollection parameters, _SqlRPC& rpc) at
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior,
Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName,
Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at
view_WardSec_PatientLogDetail2.UpdateRecord_buttonClick(Object sender, EventArgs e) in C:\Documents and Settings\
KBuchanan.LMH\Desktop\WebSites\Newest_ER\Views\view_WardSec_PatientLogDetail.aspx.vb:line 358
Here is the stored procedure:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[UpdateTblVisit_WardSecPatientLog]
(
@.VID decimal,
@.lbl_ChiefComplaint nvarchar(50),
@.TriageDtTmTextBox datetime,
@.PtInRmDtTmTextBox datetime,
@.RnInRmDtTmTextBox datetime,
@.PhyInRmDtTmTextBox datetime,
@.EDHoldDisposDtTmTextBox datetime,
@.DispDschDtTmTextBox datetime,
@.ddlTriageNurse uniqueidentifier,
@.ddlPriNurse uniqueidentifier,
@.ddlEDPhy uniqueidentifier,
@.ddlPriRefPhy decimal,
@.ddlSecRefPhy decimal,
@.ddlDschRN uniqueidentifier,
@.ddlDschPhy uniqueidentifier,
@.ddl_MnsArriv decimal,
@.lblDschDiag nvarchar(50),
@.chkbox_LogComplete bit
)
AS
SET NOCOUNT ON
Update
tblVisit
SET
vChiefComplaint = @.lbl_ChiefComplaint,
vTriageDtTm = @.TriageDtTmTextBox,
vPtInRmDtTm = @.PtInRmDtTmTextBox,
vRnInRmDtTm = @.RnInRmDtTmTextBox,
vPhyInRmDtTm = @.PhyInRmDtTmTextBox,
vEDHoldDisposDtTm = @.EDHoldDisposDtTmTextBox,
vDispDschDtTm = @.DispDschDtTmTextBox,
vTriageRnID = @.ddlTriageNurse,
vRnID = @.ddlPriNurse,
vEdPhyProvID = @.ddlEDPhy,
vPriRefPhyProvID = @.ddlPriRefPhy,
vSecRefPhyProvID = @.ddlSecRefPhy,
vDschRnID = @.ddlDschRN,
vDschPhyID = @.ddlDschPhy,
vMnsArrvID = @.ddl_MnsArriv,
vDschDiag = @.lblDschDiag,
vLogCompletedInd = @.chkbox_LogComplete,
vLogLastEdit = getDate()
WHERE
VID = @.VID
SET NOCOUNT OFF
RETURN
------------------------
Following is the codebehind for a button oncommand event. This code
should execute the stored procedure.
------------------------
Public Sub UpdateRecord_buttonClick(ByVal sender As Object, ByVal e As System.EventArgs)
'Use this to update the CareGiverID into the tbl_Visit table.
Dim sbSql As New System.Text.StringBuilder
sbSql.Append("EXEC UpdateTblVisit_WardSecPatientLog ")
sbSql.Append("@.VID, ")
sbSql.Append("@.lbl_ChiefComplaint, ")
sbSql.Append("@.TriageDtTmTextBox, ")
sbSql.Append("@.PtInRmDtTmTextBox, ")
sbSql.Append("@.RnInRmDtTmTextBox, ")
sbSql.Append("@.PhyInRmDtTmTextBox, ")
sbSql.Append("@.EDHoldDisposDtTmTextBox, ")
sbSql.Append("@.DispDschDtTmTextBox, ")
sbSql.Append("@.ddlTriageNurse, ")
sbSql.Append("@.ddlPriNurse, ")
sbSql.Append("@.ddlEDPhy, ")
sbSql.Append("@.ddlPriRefPhy, ")
sbSql.Append("@.ddlSecRefPhy, ")
sbSql.Append("@.ddlDschRN, ")
sbSql.Append("@.ddlDschPhy, ")
sbSql.Append("@.ddl_MnsArriv, ")
sbSql.Append("@.lblDschDiag, ")
sbSql.Append("@.chkbox_LogComplete, ")
sbSql.Append("@.UserID ")
'Response.Write(sbSql.ToString)
'Response.End()
'Create variables for each of the edited values
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("ERTrekker_ProdConnectionString1").ConnectionString)
Dim cmd As New SqlCommand(sbSql.ToString(), con)
FindControls(DetailsView, "lbl_ChiefComplaint")
Dim ilbl_ChiefComplaint As TextBox = CType(MyControl, TextBox)
FindControls(DetailsView, "TriageDtTmTextBox")
Dim iTriageDtTmTextBox As TextBox = CType(MyControl, TextBox)
FindControls(DetailsView, "PtInRmDtTmTextBox")
Dim iPtInRmDtTmTextBox As TextBox = CType(MyControl, TextBox)
FindControls(DetailsView, "RnInRmDtTmTextBox")
Dim iRnInRmDtTmTextBox As TextBox = CType(MyControl, TextBox)
FindControls(DetailsView, "PhyInRmDtTmTextBox")
Dim iPhyInRmDtTmTextBox As TextBox = CType(MyControl, TextBox)
FindControls(DetailsView, "EDHoldDisposDtTmTextBox")
Dim iEDHoldDisposDtTmTextBox As TextBox = CType(MyControl, TextBox)
FindControls(DetailsView, "DispDschDtTmTextBox")
Dim iDispDschDtTmTextBox As TextBox = CType(MyControl, TextBox)
FindControls(DetailsView, "ddlTriageNurse")
Dim iddlTriageNurse As DropDownList = CType(MyControl, DropDownList)
FindControls(DetailsView, "ddlPriNurse")
Dim iddlPriNurse As DropDownList = CType(MyControl, DropDownList)
FindControls(DetailsView, "ddlEDPhy")
Dim iddlEDPhy As DropDownList = CType(MyControl, DropDownList)
FindControls(DetailsView, "ddlPriRefPhy")
Dim iddlPriRefPhy As DropDownList = CType(MyControl, DropDownList)
FindControls(DetailsView, "ddlDschRN")
Dim iddlDschRN As DropDownList = CType(MyControl, DropDownList)
FindControls(DetailsView, "ddlDschPhy")
Dim iddlDschPhy As DropDownList = CType(MyControl, DropDownList)
FindControls(DetailsView, "ddl_MnsArriv")
Dim iddl_MnsArriv As DropDownList = CType(MyControl, DropDownList)
FindControls(DetailsView, "lblDschDiag")
Dim ilblDschDiag As TextBox = CType(MyControl, TextBox)
FindControls(DetailsView, "chkbox_LogComplete")
Dim ichkbox_LogComplete As CheckBox = CType(MyControl, CheckBox)
'Add all of the parameters to the command
With cmd.Parameters
.AddWithValue("@.VID", Request("vID"))
.AddWithValue("@.lbl_ChiefComplaint", ilbl_ChiefComplaint.Text.ToString)
.AddWithValue("@.TriageDtTmTextBox", iTriageDtTmTextBox.Text.ToString)
.AddWithValue("@.PtInRmDtTmTextBox", iPtInRmDtTmTextBox)
.AddWithValue("@.RnInRmDtTmTextBox", iRnInRmDtTmTextBox.Text.ToString)
.AddWithValue("@.PhyInRmDtTmTextBox", iPhyInRmDtTmTextBox.Text.ToString)
.AddWithValue("@.EDHoldDisposDtTmTextBox", iEDHoldDisposDtTmTextBox.Text.ToString)
.AddWithValue("@.DispDschDtTmTextBox", iDispDschDtTmTextBox.Text.ToString)
.AddWithValue("@.ddlTriageNurse", iddlTriageNurse.SelectedValue.ToString)
.AddWithValue("@.ddlPriNurse", iddlPriNurse.SelectedValue.ToString)
.AddWithValue("@.ddlEDPhy", iddlEDPhy.SelectedValue.ToString)
.AddWithValue("@.ddlPriRefPhy", iddlPriRefPhy.SelectedValue.ToString)
.AddWithValue("@.ddlDschRN", iddlDschRN.SelectedValue.ToString)
.AddWithValue("@.ddlDschPhy", iddlDschPhy.SelectedValue.ToString)
.AddWithValue("@.ddl_MnsArriv", iddl_MnsArriv.SelectedValue.ToString)
.AddWithValue("@.lblDschDiag", ilblDschDiag.Text.ToString)
.AddWithValue("@.chkbox_LogComplete", ichkbox_LogComplete.Checked.ToString)
.AddWithValue("@.UserID", System.Web.HttpContext.Current.Session("UserID"))
End With
' Open the connection and execute the command
Try
con.Open()
If cmd.ExecuteNonQuery() < 1 Then
Throw New System.Exception("The record was not updated")
End If
Catch ex As Exception
System.Web.HttpContext.Current.Response.Write(ex.ToString())
Finally
If Not con Is Nothing AndAlso con.State = System.Data.ConnectionState.Open Then
con.Close()
End If
End Try
End Sub
(2) Your @.VID is a decimal? Doesnt seem like a good idea to put in a where condition. Sometimes 10 may not be equal to 10.0. So make sure you include the precision too in the parameter.
ALTER PROCEDURE [dbo].[UpdateTblVisit_WardSecPatientLog]
(
@.VID decimal(8,2),
also make sure about similar change in the vb code.
No comments:
Post a Comment