Avatar billede disco_keld Nybegynder
13. februar 2003 - 14:13 Der er 6 kommentarer og
1 løsning

et asp.net og stored procedure spm?

Hej med jer,

Jeg har en SPROC jeg kalder for at update data i Db fra et webinterface.

Mit problem er bare at jeg ikke kan få WHERE sætningen til at virke ved update.

Helt præcist har jeg en dropdownliste jeg kan vælge den pågældende brugernavn fra, som så med autopostback loader input felterne underneden med det data man kan opdatere.
Droplistens valuefield er UserID't fra Db.

Her er min droplist:

<asp:DropDownList
                                                    id="ddlUsers"
                                                    AutoPostBack="True"
                                                    onselectedindexchanged="ddlUsers_OnSelectedIndexChanged"
                                                    cssclass="ddlUsers"
                                                    runat="server"
                                                />

Med den her: onselectedindexchanged="ddlUsers_OnSelectedIndexChanged"
kalder jeg en Sub rutine som så loader den pågældende bruger.

I den sub ser min SQL således ud:

  Dim strSQL As String = "sp_GetUserData'" & ddlUsers.SelectedItem.Value & "'"

Kalder SPROC'en "sp_GetUserData'" og så det valgte Item fra droplisten.

er det rigtig syntax?

Jeg gør det på samme måde når jeg skal update min db.

Men her får jeg en error:

"Could not find stored procedure 'sp_UserUpdate'4''. "

4 talet er så userid'et fra db, men der er jo syntax fejl.

Hvordan retter jeg det i min sql som er under neden?

Jeg har min button update event, som håndtere update af db.

Her ser min sql således ud:

Dim strSQL As String = "sp_UserUpdate'" & ddlUsers.SelectedItem.Value & "'"
                myCommand = New SqlCommand(strSQL, myConnection)

Og min SPROC ser således ud:

ALTER PROCEDURE sp_UserUpdate
(
    @UserID int,
    @Company varchar(50),
    @Name varchar(50),
    @Email varchar(50),
    @Password varchar(50),
    @UserRights int,
    @AddedDate datetime
)
AS

DECLARE @userIndex AS Int

IF @@ERROR = 0
BEGIN
    UPDATE
        tbl_User_Accounts
    SET
        Company = @Company,
        [Name] = @Name,
        Email = @Email,
        UserRights = @UserRights
    WHERE
        UserID = @userIndex
END

Mvh

Keld
Avatar billede lgy Nybegynder
13. februar 2003 - 14:28 #1
Problemet er at du ikke sender parameterne med til dine stored proc's.
Du opretter din SQL-command med sp'ens name som sql-string.

Dim strSQL As String = "sp_UserUpdate"
myCommand = New SqlCommand(strSQL, myConnection)

Efterfølgende skal du tilføje de parametre du vil sende med.

myCommand.Parameter["@UserID"] = ddlIsers.SelectedItem.Value

Din SP bør se sådan ud:
ALTER PROCEDURE sp_UserUpdate
(
    @UserID int,
    @Company varchar(50),
    @Name varchar(50),
    @Email varchar(50),
    @Password varchar(50),
    @UserRights int,
    @AddedDate datetime
)
AS

IF @@ERROR = 0
BEGIN
    UPDATE
        tbl_User_Accounts
    SET
        Company = @Company,
        [Name] = @Name,
        Email = @Email,
        UserRights = @UserRights
    WHERE
        UserID = @UserID
END

Det skulle gøre det. Jeg programmer normalt i C#, men der skulle ikke være så meget forskel
Avatar billede lgy Nybegynder
13. februar 2003 - 14:29 #2
Du skal selvfølgelig også tilføje de andre parametre på samme vis som @UserID

mvh Lars
Avatar billede disco_keld Nybegynder
13. februar 2003 - 14:29 #3
når jeg udskriver sql'en når jeg vælger en bruger fra listen, ser den således ud:

sp_GetUserData'4'

og her kommer den ikke med nogen fejl.........

kun når jeg updater db. :-(
Avatar billede disco_keld Nybegynder
13. februar 2003 - 14:42 #4
VIRKER! Total for vildt.........

jeg skal bare lige tænke mig om, for alle mine andre parametre har jeg også lavet således:

myCommand = New SqlCommand("sp_UserUpdate", myConnection)

                myCommand.CommandType = CommandType.StoredProcedure

                Dim parameterUserID As New SqlParameter("@UserID", SqlDbType.Int, 4)
                myCommand.Parameters.Add(parameterUserID)
                parameterUserID.Direction = ParameterDirection.Input
                parameterUserID.Value = ddlUsers.SelectedItem.Value

Spasser jeg er....... ;-)

Må jeg smide dig en mail hvis en dag? Savner nogen gange en .NET sparrings partner!

Og points for you lgy!

Mvh

Keld
Avatar billede disco_keld Nybegynder
13. februar 2003 - 14:45 #5
forresten hvad er forskellen på dem her:

parameterUserID.Direction = ParameterDirection.output ?
parameterUserID.Direction = ParameterDirection.InputOutPut ?
parameterUserID.Direction = ParameterDirection.Input
parameterUserID.Direction = ParameterDirection.ReturnValue

jeg kan aldrig huske hvornår jeg skal bruge hvad, udover at input parametren smider det ind i SP'en......... hehe

:-)
Avatar billede lgy Nybegynder
13. februar 2003 - 14:55 #6
output er en parameter som bliver sendt fra sql.

returnvalue kan du vist selv sætte i din sp - jeg har ikke brugt andre end input og output.

Du er velkommen til at skrive - det kan være fustrerende at sidde med noget og ikke kunne komme videre.

Lars
Avatar billede disco_keld Nybegynder
13. februar 2003 - 14:58 #7
for fed.............

mange tak!

vi snakkes ved ;-)

Keld
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