Avatar billede Spotgun Seniormester
16. november 2001 - 11:41 Der er 1 kommentar og
1 løsning

Manglende værdier i stored procedure

Jeg har en stored procedure som ser således ud:
-----------------------------------------------
CREATE PROCEDURE dbo.doProblemList
  @sort int
AS
If @sort = 1
  SELECT * FROM Problems, Medarbejdere WHERE Problems.Userno = Medarbejdere.MedarbejdereID ORDER BY Priority, TimeCreated
else if @sort = 2
  SELECT * FROM Problems, Medarbejdere WHERE Problems.Userno = Medarbejdere.MedarbejdereID ORDER BY BrugerNavn, Priority, TimeCreated
else if @sort = 3
  SELECT * FROM Problems, Medarbejdere WHERE Problems.Userno = Medarbejdere.MedarbejdereID ORDER BY Afdelingsnavn, Priority, TimeCreated
else if @sort = 4
  SELECT * FROM Problems, Medarbejdere WHERE Problems.Userno = Medarbejdere.MedarbejdereID ORDER BY Topic, Priority, TimeCreated
else if @sort = 5
  SELECT * FROM Problems, Medarbejdere WHERE Problems.Userno = Medarbejdere.MedarbejdereID ORDER BY TimeCreated, Priority
else if @sort = 6
  SELECT * FROM Problems, Medarbejdere WHERE Problems.Userno = Medarbejdere.MedarbejdereID ORDER BY Solved, Rejected, Priority, TimeCreated
GO
-------------------------------------------------
På min ASP side, hvor jeg skal hente de data som SP\'en returnerer har jeg følgende kode (har kun medtaget de ting jeg fandt relevante for beskrivelsen af problemet):
-------------------------------------------------

  Set Conn = Server.CreateObject(\"ADODB.Connection\")
  Conn.Open Connect()

  Set Com = Server.CreateObject(\"ADODB.Command\")
  Com.CommandText = \"doProblemList\"
  Com.CommandType = adCmdStoredProc
  Set Com.ActiveConnection = Conn
 
  Set Param = Com.CreateParameter (\"@Sort\", adInteger, adParamInput, 1, Sort)
  Com.Parameters.Append Param
 
  Set RS = Com.Execute()


Og:


While Not RS.EOF
\' Afgør status på fejlen!
    Status = \"[\"&RS(\"Solved\")&\":\"&RS(\"Approved\")&\":\"&RS(\"Rejected\")&\"]\"
    If (RS(\"Solved\") = True AND RS(\"Approved\") = True AND RS(\"Rejected\") = False) Then
        Stat2 = \"Godkendt\"
    ElseIf (RS(\"Solved\") = True AND RS(\"Approved\") = False AND RS(\"Rejected\") = False) Then
        Stat2 = \"Løst\"
    ElseIf (RS(\"Solved\") = True AND RS(\"Approved\") = False AND RS(\"Rejected\") = True) Then
        Stat2 = \"Afvist\"
    ElseIf (RS(\"Solved\") = False AND RS(\"Approved\") = False AND RS(\"Rejected\") = False) Then
        Stat2 = \"Uløst\"
    End if
   
    Response.Write \"<td>\"& RS(\"Priority\") &\"</td>\"
    Response.Write \"<td>\"& RS(\"BrugerNavn\") &\"</td>\"
    Response.Write \"<td>\"& RS(\"Afdelingsnavn\") &\"</td>\"
    Response.Write \"<td>\"& RS(\"Topic\")&\"</td>\"
    Response.Write \"<td>\"& RS(\"TimeCreated\")&\"</td>\"
    Response.Write \"<td>\"& Status &\" -> \"& Stat2 &\"</td>\"

  RS.MoveNext
  response.Write \"</tr>\"
\'  End If
Wend

--------------------------------------------

Alt i alt virker det meget fint, lige bortset fra, at den intet skriver ud ved RS(\"Priority\") og RS(\"Afdelingsnavn\"). Alle andre værdier udskrives rigtigt nok.

Er der nogen der har en forklaring/løsning på dette problem?

Og hvis der er nogen der har en måde at optimere den stored procedure på, er jeg da også åben for forslag...

Avatar billede tmceu Praktikant
16. november 2001 - 15:26 #1
Hvilken af de 2 tabeller kommer de manglende felter fra ?
- umiddelbart vil jeg mene det skyldes at den ikke joiner rigtigt

Jeg vil i øvrigt foreslå dig at bruge denne SELECT i stedet

SELECT * FROM Problems INNER JOIN Medarbejdere ON Problems.Userno = Medarbejdere.MedarbejdereID
Avatar billede Spotgun Seniormester
07. januar 2002 - 12:08 #2
Lukker...
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

IT-JOB