Showing posts with label uniqueidentifier. Show all posts
Showing posts with label uniqueidentifier. Show all posts

Wednesday, March 21, 2012

Problem with SP and uniqueidentifier

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

(1) You have an additional parameter @.userID that you are trying to force into the stored proc which was not defined.
(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.

Problem with sp and uniqueidentifier

Hi,

I use this procedure to add a record to the db (SQL 2005)
i constantly get this error:

Conversion failed when converting from a character string to uniqueidentifier.

This is the sp:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROC [dbo].[AddBootloader]

@.BootName nvarchar(50),
@.Version nvarchar(50),
@.CSD nvarchar(50),
@.CreatorID uniqueidentifier,
@.FilePath nvarchar(150),
@.FileSize nvarchar(150)

AS
INSERT INTO dbo.EB_Bootloaders

([Bootname]
,[Version]
,[CSD]
,[FilePath]
,[FileSize]
,[CreatorID])


VALUES

(
@.BootName,
@.Version,
@.CSD,
@.CreatorID,
@.FilePath,
@.FileSize)

And this is the table:

USE [Ebdata]
GO
/****** Object: Table [dbo].[EB_Bootloaders] Script Date: 07/12/2006 10:06:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[EB_Bootloaders](
[ID] [bigint] IDENTITY(1,3) NOT NULL,
[BootName] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[Version] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[CSD] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[FilePath] [nvarchar](150) COLLATE Latin1_General_CI_AS NULL,
[FileSize] [nvarchar](50) COLLATE Latin1_General_CI_AS NULL,
[CreateDate] [datetime] NULL CONSTRAINT [DF_EB_Bootloaders_CreateDate] DEFAULT (getdate()),
[CreatorID] [uniqueidentifier] NOT NULL,
[UpdateDate] [datetime] NULL,
[UpdateUser] [uniqueidentifier] NULL,
CONSTRAINT [PK_EB_Bootloaders_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
USE [Ebdata]
GO
ALTER TABLE [dbo].[EB_Bootloaders] WITH NOCHECK ADD CONSTRAINT [FK_EB_Bootloaders_aspnet_Users] FOREIGN KEY([CreatorID])
REFERENCES [dbo].[aspnet_Users] ([UserId])
NOT FOR REPLICATION
GO
ALTER TABLE [dbo].[EB_Bootloaders] WITH NOCHECK ADD CONSTRAINT [FK_EB_Bootloaders_aspnet_Users1] FOREIGN KEY([UpdateUser])
REFERENCES [dbo].[aspnet_Users] ([UserId])
NOT FOR REPLICATION

The funny thing is that i copied the sp code from another which runs perfect,
I insert a Guid from an asp.net page.

Hope someone can help me here because im am stucked!

Cheers WimmoHi Wimmo

Aren't your VALUES in your insert statement in the wrong order (@.CreatorID should be last not fourth)?|||set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROC [dbo].[AddBootloader]

@.BootName nvarchar(50),
@.Version nvarchar(50),
@.CSD nvarchar(50),
@.CreatorID uniqueidentifier,
@.FilePath nvarchar(150),
@.FileSize nvarchar(150)

AS
INSERT INTO dbo.EB_Bootloaders

([Bootname]
,[Version]
,[CSD]
,[CreatorID]
,[FilePath]
,[FileSize]
)


VALUES

(
@.BootName,
@.Version,
@.CSD,
@.CreatorID,
@.FilePath,
@.FileSize)|||Euh thanx, think i was sleeping!
Glad some people are awake!
Thanx for helping me!

cheers Wim