注册 登录
编程论坛 ASP技术论坛

split() 函数截取文本框数据问题?????

dsgjuni 发布于 2008-05-02 16:22, 1438 次点击
在文本框中输入如下数据: 1.23,1.33,1.5,1.22   type ="text"  name=" index"

  使用split()函数 读取 数据, 写入到数组 index()中,
 要求计算1.23*1.33*1.5*1.22 的乘积,写到数据库中, 出现数据类型不匹配问题, 好象是数组中的数据是字符型, 使用csng()将数组中各个值进行转换,
 系统提示:         
      Microsoft VBScript 运行时错误 (0x800A000D)
      类型不匹配: 'CSng'
请问如何解决?
9 回复
#2
makebest2008-05-02 23:09
这个问题要你足够细心就能找到原因,仅从上面的描述是无法判断的
#3
multiple19022008-05-03 08:52
总感觉你描述得不够详细,但估计问题出在Split函数的用法上,你怎么用的?

居然有人问这么具体的问题不发代码的……
#4
dsgjuni2008-05-03 10:28
dim rsum                '最后结果  
dim index()
dim rindex()
redim index(sum)        ' sum为变量,值为rs.recordcount
redim rindex(sum)
temp3=trim(replace(request("index"),",,",","))  '取出文本框index数据, 并将值写到数组index()
    for i= 2 to sum      
      index(i)=split(temp3,",")         
    next

   For i = 2 To sum
       rindex(i) = CSng(index(i))  '转换成单精度型,写到数组rindex()中, 提示类型不匹配 'CSng'
   Next

   for  i=sum to 2 step -1     '计算rsum的值,rsum= 1.22+1.22*1.5+1.22*1.5*1.33+1.22*1.5*1.33*1.23
    s=1
    s=s*rindex(i)         '就是这行出现问题...,好象是数据类型不匹配
    rsum=rsum+s
  next

[[it] 本帖最后由 dsgjuni 于 2008-5-3 10:32 编辑 [/it]]
#5
tianyu1232008-05-03 13:17
s=s*cint(rindex(i))
#6
dsgjuni2008-05-03 15:12
取整不行,  因为必须有小数, 精度有要求.
   即使是用cint, 同样提示 类似csng 这样的错误.  无语了 . 继续求......
难道asp 中计算功能那么面???
#7
yms1232008-05-03 15:39
要是使用javascript的话楼主的问题根本不需要split函数
<script language="javascript">
var testStr="1.23,1.33,1.5,1.22";
testStr=testStr.replace(',','*');
document.write(eval(testStr));
</script>
#8
multiple19022008-05-03 16:47
[bo]以下是引用 [un]dsgjuni[/un] 在 2008-5-3 10:28 的发言:[/bo]
dim rsum                '最后结果  
dim index()
dim rindex()
redim index(sum)        ' sum为变量,值为rs.recordcount
redim rindex(sum)
temp3=trim(replace(request("index"),",,",","))  '取出文本框index数据, 并将值写到数组index()
    for i= 2 to sum      
      'index(i)=split(temp3,",")         ' split的用法错误!!
    next
' 应该这样:
index=split(temp3,",")


'split的结果是一个数组,而你这样用index的每个元素都是数组了,数组自然无法CSng

   For i = 2 To sum
       rindex(i) = CSng(index(i))  '转换成单精度型,写到数组rindex()中, 提示类型不匹配 'CSng'
   Next

   for  i=sum to 2 step -1     '计算rsum的值,rsum= 1.22+1.22*1.5+1.22*1.5*1.33+1.22*1.5*1.33*1.23
    s=1
    s=s*rindex(i)         '就是这行出现问题...,好象是数据类型不匹配
    rsum=rsum+s
  next
#9
multiple19022008-05-03 16:49
[bo]以下是引用 [un]yms123[/un] 在 2008-5-3 15:39 的发言:[/bo]

要是使用javascript的话楼主的问题根本不需要split函数

var testStr="1.23,1.33,1.5,1.22";
testStr=testStr.replace(',','*');
document.write(eval(testStr));
 

或者用服务器端vbscript实现

temp3=trim(replace(request("index"),",,",","))  '取出文本框index数据
temp3=replace(temp3,",","*")
Response.write eval(temp3)
#10
tianyu1232008-05-03 17:38
[bo]以下是引用 [un]yms123[/un] 在 2008-5-3 15:39 的发言:[/bo]

要是使用javascript的话楼主的问题根本不需要split函数

var testStr="1.23,1.33,1.5,1.22";
testStr=testStr.replace(',','*'); //这样只能替换一个
document.write(eval(testStr));
 


改为:
<script language="javascript">
var testStr="1.23,1.33,1.5,1.22";
var regs=new RegExp(",","gi");
testStr=testStr.replace(regs,"*"); //可以全部替换
document.write(eval(testStr));
</script>
1