Parametre behøver ikke være sindsygt svært. Du kan pakke opsætningen af command-objektet ind i en funktion og benytte en ultrasimpel metode til at kalde command-objektet (som nok kan bruges i 80-90% af de tilfælde du har behov for at kalde databasen). Nogenlunde således (du kan med fordel placere funktionen i en separat fil, så du kan drage nytte af den mange steder):
<%
function getTextCommand(conn, sql)
dim cmd
set cmd = Server.CreateObject("ADODB.Command")
cmd.CommandText = sql
cmd.CommandType = adCmdText
cmd.ActiveConnection = conn
set getTextCommand = cmd
end function
%>
<%
strSQL = "SELECT * FROM report005 WHERE Attribute_Attribute_ID = ?"
set cmd = getTextCommand(objConn, strSQL)
set report005 = cmd.Execute(,array(request.QueryString("id")))
if not report005.eof then
%>
Data her: <%=report005("Rule_ID")%>
<%
else
%>
Der var ingen data
<%
end if
report005.Close
objConn.Close
%>
Bemærk at parametrene overføres i et array og i den rækkefølge de forekommer i SQL-strengen. ADO finder selv i det fleste tilfælde ud af typerne på parametrene, så du skal bare sørge for at sende dem ind i den rigtige rækkefølge.
Denne metode er dog ikke anvendelig, hvis du arbejder med stored procedures der returnerer værdier i output-parametre, men rigtig ofte har man også blot brug for at sende input-parametre til forespørgsler mod databasen.
Metoden skulle også fungere for UPDATE, INSERT og DELETE-kommandoer, så det er rigtig anvendeligt.
Skal du arbejde med stored procedures vil jeg i øvrigt anbefale dig at anvende en lidt anden opsætning af command-objektet, helt konkret at du anvender
adCmdStoredProc i stedet for
adCmdText i
CommandType. Du kan rende ind i at databasesystemet gerne vil have parametrenes navne oplyst eksplicit og i så fald skal du over i noget á la det jeg nævner i min artikel.
HUSK AT TESTE MEGET! ADO kan til tider godt være lidt spøjs... :D