标题:split() 函数截取文本框数据问题?????
只看楼主
dsgjuni
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-4-25
 问题点数:0 回复次数:9 
split() 函数截取文本框数据问题?????
在文本框中输入如下数据: 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'
请问如何解决?
搜索更多相关主题的帖子: split 函数 文本 数据 
2008-05-02 16:22
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
得分:0 
这个问题要你足够细心就能找到原因,仅从上面的描述是无法判断的
2008-05-02 23:09
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
得分:0 
总感觉你描述得不够详细,但估计问题出在Split函数的用法上,你怎么用的?

居然有人问这么具体的问题不发代码的……
2008-05-03 08:52
dsgjuni
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-4-25
得分:0 
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]]
2008-05-03 10:28
tianyu123
Rank: 1
等 级:新手上路
威 望:2
帖 子:576
专家分:0
注 册:2007-8-26
得分:0 
s=s*cint(rindex(i))

改变一切,须从改变观念开始!
2008-05-03 13:17
dsgjuni
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2008-4-25
得分:0 
取整不行,  因为必须有小数, 精度有要求.
   即使是用cint, 同样提示 类似csng 这样的错误.  无语了 . 继续求......
难道asp 中计算功能那么面???
2008-05-03 15:12
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
要是使用javascript的话楼主的问题根本不需要split函数
<script language="javascript">
var testStr="1.23,1.33,1.5,1.22";
testStr=testStr.replace(',','*');
document.write(eval(testStr));
</script>
2008-05-03 15:39
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
得分:0 
[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
2008-05-03 16:47
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
得分:0 
[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)
2008-05-03 16:49
tianyu123
Rank: 1
等 级:新手上路
威 望:2
帖 子:576
专家分:0
注 册:2007-8-26
得分:0 
[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>

改变一切,须从改变观念开始!
2008-05-03 17:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-212021-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.272413 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved