2010-08-16 5 views
2

J'ai créé une requête paramétrée pour obtenir le contenu de l'article/de la page comme suit;Passage de valeur via une requête paramétrée

<% 
     article = cint(request("article")) 

     Set conn = Server.CreateObject("ADODB.connection") 
     conn.Open Application("database") 
     Set cmd = Server.CreateObject("ADODB.command") 
     With cmd 
       .ActiveConnection = conn 
       .CommandType = adCmdStoredProc 
       .CommandText = "prc_getArticle" 
       .Parameters.Append .CreateParameter("@ArticleID", adInteger, adParamInput,, article) 
       Set rsArticle = .Execute 
     End With 
     While Not rsArticle.EOF 

     article = rsArticle.fields("art_id") 
     arttitle = rsArticle.fields("art_title") 
     artcontent = rsArticle.fields("art_content") 

     rsArticle.MoveNext 
     Wend 
     rsArticle.Close() 
     Set rsArticle = Nothing 
%> 

La requête ci-dessus est placé dans un fichier Include, qui demande le « article » de la page pour obtenir le contenu de l'article, mais je ne suis pas sûr de savoir comment passer ensuite cela par la requête.

J'ai la ligne suivante dans la requête; Notez le 'article' à la fin, mais évidemment ce n'est pas la bonne façon de référencer l'article demandé à partir de cette ligne;

article = cint(request("article")) 

Dans ma page actuelle, j'inclus un fichier avec le code ci-dessus et j'ai également les éléments suivants dans la page;

<% 
article = 22 
%> 

<h1><%=arttitle%></h1> 

Évidemment, pour l'instant, cela n'attrape pas le contenu à afficher dans la page. Je me demandais si quelqu'un pourrait être en mesure d'aider après ma question plutôt verbeuse?

Merci. : D

+0

verbeux et compliqué en effet ... quel est le problème? est votre premier code, alors que rsArticle fonctionne? parce que, si c'est le cas, vous êtes en train de "passer de la valeur à travers une requête paramétrée". – cregox

Répondre

2

Vous devez créer un Class pour définir la sortie obtenue de la base de données et un Function pour créer une instance appropriée de cette classe remplie avec les détails de l'article.

Modifiez votre fichier à inclure à ceci: -

Public Class Article 
    public ID 
    public Title 
    public Content 
End Class 

Function GetArticle(article) 

    Dim conn: Set conn = Server.CreateObject("ADODB.connection") 
    conn.Open Application("database") 

    Dim cmd: Set cmd = Server.CreateObject("ADODB.command") 
    Dim rsArticle 
    cmd.ActiveConnection = conn 
    cmd.CommandType = adCmdStoredProc 
    cmd.CommandText = "prc_getArticle" 
    cmd.Parameters.Append cmd.CreateParameter("@ArticleID", adInteger, adParamInput,, article) 
    Dim rsArticle: Set rsArticle = cmd.Execute 

    IF Not rsArticle.EOF Then 
     Set GetArticle = new Article; 

     GetArticle.ID = rsArticle.fields("art_id") 
     GetArticle.Title = rsArticle.fields("art_title") 
     GetArticle.Content = rsArticle.fields("art_content") 
    Else 
     Set GetArticle = Nothing 
    End If 

    rsArticle.Close() 
End Function 

Avec cette inclure en place, vous pouvez le faire: -

<% 
    Dim article : Set article = GetArticle(22) 
%> 

<h1><%=article.Title%></h1> 
<div><%=article.Content%></div> 
+0

Salut Anthony, Merci beaucoup pour ça. Il y avait juste une erreur ici; Erreur de compilation Microsoft VBScript '800a03f2', identificateur attendu, /includes/pagecontent.asp, ligne 2 Classe publique Article ------- ^ – doubleplusgood

0

Juste après le « Set rsArticle = Nothing » essayer et faites-nous savoir ce que arrive:

<h1><%= arttitle %></h1> 
    <%= article %> - <%= artcontent %> 
Questions connexes