2013-01-09 39 views
1

我試圖用一個變量作爲SQL列字段。然而,當我運行代碼,我得到了以下錯誤:無效字符錯誤(ADO/ASP)


Microsoft VBScript compilation error '800a0408' 

Invalid character 

/junk/dbresults.htm, line 25 

DECLARE @cat char(20) 
--------^ 

的代碼如下:

<% 
    Dim connectString, connect, conDB, con 
    connectString = "Driver={Microsoft Text Driver (*.txt; *.csv)}; DBQ=" & Server.MapPath("data") 
      src_abn = Request.QueryString("abn") 
      src_cat = Request.QueryString("cat") 
    set connect = Server.CreateObject("ADODB.connection") 
    connect.open connectString 

    DECLARE @cat char(20) 
    DECLARE @dynamicsql char(1000) 

    SET @cat = src_cat; 
    SET @dynamicsql = "SELECT * FROM cont.csv WHERE @cat='Yes'" 

    if src_abn = "all" then 
    conDB = EXEC (@DynamicSQL) 
    else 
    conDB = "SELECT * FROM cont.csv WHERE ucase(abn) LIKE ucase('%"+src_abn+"%')" 
    end if 

    set con = connect.execute(conDB) 
%> 

+0

你混合了ASP/VBScript中(其中在.asp文件''<%' and '%>之間去)和Microsoft SQL Server的Transact/SQL(你放入存儲過程中的SQL服務器上)。 – webaware

回答

2

我還不能肯定你想要什麼要做,但不能用傳統的ASP運行SQL語法(即DECLARE @cat ...)。你想要做這樣的事嗎?

<% 
    //Request your variables 
    src_abn = Request.QueryString("abn") 
    src_cat = Request.QueryString("cat") 

    Dim connectionString, dbConn, rsResults, strSQL 

    //Setup your connection 
    connectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)}; DBQ=" & Server.MapPath("data") 
    set dbConn= Server.CreateObject("ADODB.Connection") 
    dbConn.open connectionString 

    //Create your sql statement 
    if src_abn = "all" then 
     strSQL = "SELECT * FROM cont.csv WHERE " & src_cat & "='Yes'" 
    else 
     strSQL = "SELECT * FROM cont.csv WHERE ucase(abn) LIKE ucase('%" & src_abn & "%')" 
    end if 

    //Create your results 
    set rsResults = Server.CreateObject("ADODB.Recordset") 
    rsResults.open strSQL, dbConn 

    //Loop through your results 
    While Not rsResults.EOF 

     rsResults.MoveNext 
    Wend 

    //Closes results and connection 
    rsResults.Close 
    dbConn.Close 
%> 
+0

基本上我需要@cat是一個變量,它從src_cat獲取它的值,我需要在SQL語句中使用它。 我在CSV文件中有一些字段。 A,B,C等我需要的sql語句應用到正確的字段(用戶從另一個頁面選擇)該代碼工作,其剛剛起步的變量是在SQL語句是問題的動態。 有可能是一個更好的辦法做我想要做的,但我不能想什麼。 案例研究: 用戶選擇類別B || (SQL語句的WHERE B =「是」「) 用戶選擇F類||(其中F =‘是’SQL語句」 – sephiith

+0

啊,你想要的@cat變量是動態的列名) - 見上面的編輯。 – sgeddes

+0

這當然似乎是進步,但一個新的錯誤彈出與該代碼如下, Microsoft OLE DB提供程序的ODBC驅動程序錯誤「80040E14」 [微軟] [ODBC文本驅動程序]語法錯誤(缺少運算符)查詢表達式'='是''。 /junk/dbresults.htm 38行 – sephiith