经典ASP,提供商:类型不匹配错误

时间:2010-02-09 14:45:57

标签: sql-server asp-classic ado

我有下面的ASP代码,用于从.csv文件导入。我在线上得到了错误

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), NULLsp_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

3 个答案:

答案 0 :(得分:1)

您确定level_3_integer_attribute_description是现有字段名称,在任何地方都没有拼写错误吗?

如果是这样,您要将数据放入此十进制值中,是否为浮点值的正确字符串表示形式?小数点和逗号没有问题?

答案 1 :(得分: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

答案 2 :(得分:0)

我们找到了这个问题的答案。问题是导入试图将空格分配到十进制列。谢谢你的帮助。我现在还被其他东西困住了!