2010-02-09 66 views
0

我有下面的ASP代碼,用於從.csv文件導入。我收到錯誤就行經典ASP,提供程序:類型不匹配錯誤

rs_add_pg_asset_attr("level_3_integer_attribute_description") = rs_get_costs("sp_import_pg_attribute_value") 

我猜的代碼試圖設置2列在兩個不同的記錄等於同樣的事情?如我錯了請糾正我。 level_3_integer_attribute_description中的數據是type decimal(13,3), NULL,而sp_import_pg_attribute_value中的數據是整個範圍的不同值type varchar(255), NULL

我不知道爲什麼這是失敗。

str_get_pg_attribute_id_sql = "SELECT * FROM tbl_level_3_cbs_attribute WHERE level_3_cbs_attribute_description = '" & rs_get_costs("sp_import_pg_attribute") & "'" 
str_get_pg_attribute_id_sql = str_get_pg_attribute_id_sql & " AND level_3_cbs_id = " & int_level_3_id 
rs_get_pg_attribute_id.Open str_get_pg_attribute_id_sql, dbConnection, 3 
if rs_get_pg_attribute_id.RecordCount <> 0 then 

    ''//Does the attribute already exist? 
    str_get_pg_attribute_sql = "SELECT * FROM tbl_asset_level_3_attribute_link WHERE " 
    str_get_pg_attribute_sql = str_get_pg_attribute_sql & "level_3_cbs_attribute_id = " & rs_get_pg_attribute_id("level_3_cbs_attribute_id") & " AND asset_level_3_id = " & int_pg_asset_id 

    rs_get_pg_attribute.Open str_get_pg_attribute_sql, dbConnection, 3 
    if rs_get_pg_attribute.RecordCount = 0 then 
     ''//No, add the attribute record 
     sqlString="select top 1 * from tbl_asset_level_3_attribute_link" 
     rs_add_pg_asset_attr.Open sqlString, dbConnection, adOpenKeyset, adLockOptimistic 
     rs_add_pg_asset_attr.AddNew 
     rs_add_pg_asset_attr("level_3_cbs_attribute_id") = rs_get_pg_attribute_id("level_3_cbs_attribute_id") 
     rs_add_pg_asset_attr("asset_level_3_id") = int_pg_asset_id 
     if rs_get_pg_attribute_id("level_3_cbs_attribute_type") = "I" then 
      rs_add_pg_asset_attr("level_3_integer_attribute_description") = rs_get_costs("sp_import_pg_attribute_value") 
     else 
      rs_add_pg_asset_attr("level_3_string_attribute_description") = rs_get_costs("sp_import_pg_attribute_value") 
     end if 
+0

請格式化代碼。適當的縮進和較短的變量名稱不會受到傷害。也可以使用'''#'序列作爲註釋而不是單個'''這有助於Stackoverflow語法突出顯示器,這對於VB代碼來說並不適合。 – AnthonyWJones 2010-02-09 16:32:10

回答

0

我們找到了答案對這個問題。問題在於「導入」試圖將空格分配到小數列中。謝謝你的幫助。我現在被卡在別的東西上了!

1

你肯定level_3_integer_attribute_description是現有的字段名,沒有錯字的錯誤地方?

如果是這樣,那麼您想要放入這個十進制值的數據是浮點值的正確字符串表示嗎?小數點和逗號沒有問題?

1

由於錯誤類型不匹配的錯誤,你可能有一個類型不匹配錯誤:)

試試這個:

rs_add_pg_asset_attr("level_3_integer_attribute_description") = _ 
         tryCDbl(rs_get_costs("sp_import_pg_attribute_value")) 

然後:

function tryCDbl(something) 
    dim retval 
    retval = 0 ''// fallback 

    on error resume next 
    if isNumeric(something) then 
     retval = cdbl(something) 
    end if 

    tryCDbl = retval 
end function