代码之家  ›  专栏  ›  技术社区  ›  Alxandr

ASP(vbs)中的类ADO查询

  •  0
  • Alxandr  · 技术社区  · 15 年前

    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中,错误就会消失。

    我用来创建参数的代码如下:

    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 回复  |  直到 15 年前
        1
  •  0
  •   ulluoink    15 年前

    它适用于“普通”sql语句,就像适用于storedprocedures一样。对于“normal”sql语句,必须将command对象的CommandType属性设置为adCmdText,并且必须使用q questionmark“?”而不是参数名。

    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
    
        2
  •  0
  •   Simmo    15 年前

    可以尝试使用刷新命令填充参数集合。

    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
    

    将导致往返服务器,但现代计算机应该应付它!