经典ASP,提供程序:类型不匹配错误
问题描述:
我有下面的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
答
我们找到了答案对这个问题。问题在于“导入”试图将空格分配到小数列中。谢谢你的帮助。我现在被卡在别的东西上了!
答
你肯定level_3_integer_attribute_description
是现有的字段名,没有错字的错误地方?
如果是这样,那么您想要放入这个十进制值的数据是浮点值的正确字符串表示吗?小数点和逗号没有问题?
答
由于错误类型不匹配的错误,你可能有一个类型不匹配错误:)
试试这个:
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
请格式化代码。适当的缩进和较短的变量名称不会受到伤害。也可以使用'''#'序列作为注释而不是单个'''这有助于*语法突出显示器,这对于VB代码来说并不适合。 – AnthonyWJones 2010-02-09 16:32:10