Avatar billede techie3 Nybegynder
18. april 2006 - 16:53 Der er 7 kommentarer

Enterprise Lib 2.0 og OUTPUT value

Hej

Jeg anvender i mine DAL's Ent Lib 2.0.

Jeg har en metode som indstter noget data i en db. tabel, hvor jeg forventer en retur vrdi i form af en integer som skulle vre det ID der er indsat i tabellen.

Men det returnere null uanset hvad. Nogen der kan se hvad jeg gr galt?

Pseudo:

_____________________________________________________

DAL metode

Public Function Insert_UserProfile(ByVal profile As Entities.ProfileEntity) As Integer

Dim db As Database = DatabaseFactory.CreateDatabase()

Dim dbCommand As DbCommand = db.GetStoredProcCommand(CN_STR_INSERT_InsertUserProfile)

'

' input params

'

db.AddInParameter(dbCommand, CN_STR_FIELD_Firstname, DbType.String, profile.Firstname)

db.AddInParameter(dbCommand, CN_STR_FIELD_Lastname, DbType.String, profile.Lastname)

'

' output params

'

db.AddOutParameter(dbCommand, CN_STR_FIELD_UserProfileID, DbType.Int32, 4)

Try

'

'execute dbCommand and insert

'

db.ExecuteScalar(dbCommand)

'

'return output id

'

Return CType(db.GetParameterValue(dbCommand, CN_STR_FIELD_UserProfileID), Integer)

'

Catch ex As SqlException

Utils.EventLogUtils.EventLogEntry(ex)

Catch ex As Exception

Utils.EventLogUtils.EventLogEntry(ex.ToString)

End Try

End Function

__________________________________________________________

T-SQL

____________________________________________________________

ALTER PROCEDURE [dbo].[InsertUserProfile]

(

@UserProfileID INT OUTPUT,

@Firstname VARCHAR(100),

@Lastname VARCHAR(100),



)

AS

BEGIN

SET NOCOUNT ON


INSERT INTO tblUser_Profile

(Firstname, Lastname)

VALUES

(@Firstname, @Lastname)


SELECT @UserProfileID = SCOPE_IDENTITY()


RETURN @UserProfileID

END

______________________________________________

Hber at høre fra jer

mvh

techie3
Avatar billede arne_v Ekspert
19. april 2006 - 05:17 #1
første ting du nok lige skulle prøve var at have samme rækkefølge på parametre
i Add og i din stored procedure
Avatar billede techie3 Nybegynder
19. april 2006 - 16:15 #2
hej arne_v

nu er rækkefølgen fuldstændig den ens. @ID INT OUTPUT står nederst i sproc'en

den kalder jeg også nederst i min function. Men det hjalp ikke... den retunrere stadig 0.

Er det ikke fint nok at bruge ExecuteScalar?

Er der noget galt med denne her:

Return CType(db.GetParameterValue(dbCommand, "ID"), Integer) ?
Avatar billede arne_v Ekspert
19. april 2006 - 16:27 #3
returnerer den null eller 0 ?
Avatar billede techie3 Nybegynder
19. april 2006 - 16:30 #4
den returnrere 0, men dataene bliver indsat korrekt i tabellen...

tror du er her den er gal måske: SELECT @UserProfileID = SCOPE_IDENTITY()  ?
Avatar billede arne_v Ekspert
19. april 2006 - 17:07 #5
skal

Return CType(db.GetParameterValue(dbCommand, "ID"), Integer)

vaere

Return CType(db.GetParameterValue(dbCommand, CN_STR_FIELD_UserProfileID), Integer)

?
Avatar billede techie3 Nybegynder
19. april 2006 - 19:00 #6
nope.... det ændrede jeg bare for at du kunne se param't.

du har ellers ingen ændrings forslag til det?
Avatar billede arne_v Ekspert
20. april 2006 - 03:19 #7
det ser jo meget tilforladeligt ud

kan du prøve et erklære retur værdien ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester