2010-02-09 63 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