Avatar billede Slettet bruger
12. oktober 2005 - 10:56 Der er 7 kommentarer og
1 løsning

Hent værdi fra stored procedure til VB-kode

Mit problem er hvordan jeg henter værdien True eller false til min kode i VB.

Jeg løber en tabel igennem. Findes brugeren skal værdien TRUE returneres ellers FALSE

ALTER PROCEDURE min_procedure

@brugernavn nvarchar(50),
AS
IF EXISTS (SELECT  *  FROM min_tabel WHERE bruger = @brugernavn)
  return (1)
ELSE
  return (0)

Min kode:
        Public Function FindesBruger(ByVal brugernavn As String) As Integer

            Dim myConnection As New SqlConnection(ConfigurationSettings.AppSettings("connectionString"))
            Dim myCommand As New SqlCommand("min_procedure", myConnection)

            myCommand.CommandType = CommandType.StoredProcedure

            Dim parameterBrugernavn As New SqlParameter("@brugernavn", SqlDbType.NVarChar, 50)
            parameterBrugernavn.Value = brugernavn
            myCommand.Parameters.Add(parameterBrugernavn)


            myConnection.Open()

            ?????  Her vil jeg bruge en IF-sætning til værdierne TRUE eller FALSE???????????

            myConnection.Close()


        End Function
Avatar billede januskh Nybegynder
12. oktober 2005 - 12:09 #1
Jeg vil foreslå at du gør således:

....
myConnection.Open()

Dim N as integer
N = myCommand.ExecuteScalar

If N = 1 then
Else
End if

myConnection.Close()

Du vil sikkert også kunne bruge en Boolean i stedet for en Integer.

Januskh
Avatar billede Slettet bruger
12. oktober 2005 - 12:14 #2
Tilføj en SqlParameter af typen integer og ParamaterDirection af ReturnValue inden din @brugernavn. Og kald så ExecuteNonQuery på myCommand. Din parameter indeholder så værdien af din return fra din stored-procedure.
Avatar billede Slettet bruger
12. oktober 2005 - 14:02 #3
Kryptos:
Kan ikke få det til at virke. Kan du ikke give et eksempel med ParameterDirection

har prøvet med:
            Dim parameterTest As New SqlParameter("@test", SqlDbType.Int, 4)
            parameterTest.Direction = ParameterDirection.Output
            myCommand.Parameters.Add(parameterTest)

            Dim parameterUserName As New SqlParameter("@UserName", SqlDbType.NVarChar, 50)
            parameterUserName.Value = userName
            myCommand.Parameters.Add(parameterUserName)

            myConnection.Open()
            myCommand.ExecuteNonQuery()
            check = parameterTest.Value
            myConnection.Close()
Avatar billede Slettet bruger
12. oktober 2005 - 14:02 #4
Men det kræver at jeg opretter @test i min stored procedure
Avatar billede arne_v Ekspert
12. oktober 2005 - 14:07 #5
ParameterDirection.ReturnValue;
Avatar billede arne_v Ekspert
12. oktober 2005 - 14:09 #6
Dim ret As SqlParameter = New SqlParameter("@retval", SqlDbType.Int)
        ret.Direction = ParameterDirection.ReturnValue
        cmd.Parameters.Add(ret)
        cmd.ExecuteNonQuery

og

CType(cmd.Parameters("@retval").Value, Integer)
Avatar billede Slettet bruger
12. oktober 2005 - 14:42 #7
Return.value var lige hvad jeg manglede :-)
Hvis du smider et svar arne_v så får du point
Avatar billede arne_v Ekspert
12. oktober 2005 - 14:52 #8
svar
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
Kurser inden for grundlæggende programmering

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