ADO LIKE запрос в ASP (VBS) - PullRequest
       31

ADO LIKE запрос в ASP (VBS)

0 голосов
/ 30 июня 2010

У меня такой запрос:

SELECT TaFellesVaktjournal.*, TaBygg.ByggNavn
FROM TaFellesVaktjournal LEFT JOIN TaBygg ON
TaFellesVaktjournal.VaktFellesByggNavnId =
TaBygg.ByggBudsjtilstEiendom WHERE VaktjFellesDato
>= @dtfr AND VaktjFellesDato <= @dttl AND (VaktFellesSak
= @sok OR VaktjFellesHendelse = @sok) ORDER BY
VaktjFellesDato DESC, VaktjFellesTid DESC

Тем не менее, я получаю сообщение об ошибке No value given for one or more required parameters..Я указал значения для @dtfr, @dttl и @sok.Кроме того, ошибка исчезает, если я удаляю части, содержащие @sok (все, что после @dttl), в ORDER BY.

Я заверил, что я указываю значения для sok, и что он не пустой.Я даже попытался указать 2 параметра с именем sok (так как они в двух местах).Кто-нибудь знает, как я могу это сделать?

Код, который я использую для создания параметров, выглядит следующим образом:

Dim conn, cmd, param
set cmd = server.createobject("adodb.command")
set param = server.createobject("adodb.parameter")
set param = cmd.createparameter("@sok", adVarChar, adParamInput, 255, sok)
cmd.parameters.append param

Ответы [ 2 ]

0 голосов
/ 22 июля 2010

это будет работать для "нормальных" операторов SQL, подобно тому, как это работает для хранимых процедур.Вы должны установить для свойства CommandType объекта команды значение adCmdText для «обычных» операторов sql И вы должны использовать вопросительный знак q «?»вместо имен параметров.

вам не нужен метод обновления, ado сделает это автоматически за вас.(это полезно только для хранимых процедур)

dim sql
dim cmd : set cmd = server.createObject("ADODB.Command")
dim param, rs

sql = "SELECT TaFellesVaktjournal.*, TaBygg.ByggNavn" &_
      " FROM TaFellesVaktjournal" &_
      " LEFT JOIN TaBygg ON TaFellesVaktjournal.VaktFellesByggNavnId = TaBygg.ByggBudsjtilstEiendom" &_
      " WHERE VaktjFellesDato >= ?" &_
      " AND VaktjFellesDato <= ?" &_
      " AND (VaktFellesSak= ? OR VaktjFellesHendelse = ?)" &_
      " ORDER BY VaktjFellesDato DESC, VaktjFellesTid DESC"

cmd.ActiveConnection = conn
cmd.CommandType = adCmdText

set param = cmd.CreateParameter("dtfr", adVarChar, , 255, dtfr)
cmd.Parameters.Append param

set param = cmd.CreateParameter("dtfr2", adVarChar, , 255, dtfr)
cmd.Parameters.Append param

set param = cmd.CreateParameter("dttl", adVarChar, , 255, dttl)
cmd.Parameters.Append param

set param = cmd.CreateParameter("sok", adVarChar, , 255, sok)
cmd.Parameters.Append param

cmd.CommandText = sql

set rs = cmd.execute

set param = nothing
set cmd = nothing
0 голосов
/ 30 июня 2010

Вы можете попытаться заполнить коллекцию параметров с помощью команды обновления.

Set cmd.ActiveConnection = oConn
oCmd.CommandType=adCmdStoredProc
oCmd.CommandText="ap_Your_spName"
oCmd.Parameters.Refresh
oCmd.Parameters("@dtfr") = dtfr
oCmd.Parameters("@dttl") = dttl
oCmd.Parameters("@sok") = sok
oCmd.Execute

Возьмите поездку туда и обратно на сервер, но современные компьютеры должны справиться с этим!

...