0

我在下面编写了应该基于两个参数从数据库中搜索的代码片段

  1. 整数值(船舶 ID)
  2. 字符串值(船舶名称)。

但是使用以下代码,我可以使用 SHIP 名称从数据库中获取数据,即使用第二种情况。但无法使用 SHIP 的 ID 搜索数据。

以下是代码片段。非常感谢您对这些的任何帮助。

nIMO = sql_ship_friendly(request.querystring("nIMO"))
if IsNumeric(nIMO) = false then
    nIMO = ""
else
    nIMO = cInt(nIMO)
end if

sVessel = sql_ship_friendly(UCase(request.querystring("sVessel")),10)


if not nIMO = "" then   

    'search based on vessel id




sql = "SELECT IMO_NBR, VESSEL_NM, COALESCE(SHIP_TYP,'0') AS SHIP_TYP, COALESCE(DWT_WT, 0) AS DWT_WT, COALESCE(YEAR_BUILT_NBR, 0) AS YEAR_BUILT_NBR FROM RSP_VESSEL_VW WHERE ACTIVE_IND='Y' AND IMO_NBR = 7723948"
    Set db1 = Server.CreateObject("ADODB.Connection")
    db1.Open GV_VIEW_DB_String 
    Set rs = db1.Execute(sql)
    Set dbl = nothing "

elseif not sVessel = "" then

    'search based on vessel number


sql = "SELECT IMO_NBR, VESSEL_NM,  COALESCE(SHIP_TYP,'0') AS SHIP_TYP, COALESCE(DWT_WT, 0) AS DWT_WT, COALESCE(YEAR_BUILT_NBR , 0) AS YEAR_BUILT_NBR FROM RSP_VESSEL_VW WHERE VESSEL_NM LIKE '"&SVESSEL&"%' AND ACTIVE_IND='Y'"

' response.write sql Set db1 = Server.CreateObject("ADODB.Connection") db1.Open GV_VIEW_DB_String Set rs = db1.Execute(sql) Set dbl = nothing

4

2 回答 2

0

问题是您的 SQL 语句中没有使用 nIMO 变量作为搜索条件的地方。忘记使用 IsNumeric(nIMO) = false... 改用 isNull 函数。尝试这个。

if not isnull( request.querystring("nIMO")) then
    nIMO = cInt(nIMO)
    sql = "SELECT IMO_NBR, VESSEL_NM, COALESCE(SHIP_TYP,'0') AS SHIP_TYP," &_
          "COALESCE(DWT_WT, 0) AS DWT_WT, COALESCE(YEAR_BUILT_NBR, 0) AS " &_
          "YEAR_BUILT_NBR FROM RSP_VESSEL_VW WHERE ACTIVE_IND='Y' AND " &_
          "IMO_NBR =" & nIMO
    ...
    ...
    ...
 end if 
于 2012-09-03T06:13:09.643 回答
0

如果您的第一个案例您已放置以下

sql = "选择 IMO_NBR,VESSEL_NM,COALESCE(SHIP_TYP,'0') 作为 SHIP_TYP,COALESCE(DWT_WT,0) 作为 DWT_WT,COALESCE(YEAR_BUILT_NBR,0) 作为 YEAR_BUILT_NBR 来自 RSP_VESSEL_VW,其中 ACTIVE_IND='Y' 和 IMO_NBR = 7723948"

但我可以看到您在查询中使用了nIMO参数。放上它,你应该得到结果..

您可以像 AND IMO_NBR = nIMO 一样使用它。

于 2012-07-31T07:10:49.130 回答