| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1047 人关注过本帖
标题:函数参数类型不匹配
只看楼主 加入收藏
lck
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-25
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:9 
函数参数类型不匹配
我写了一段vf代码,文本框的值我已经设置为日期型了,为什么运行时一直提示参数类型不匹配?求高手指点!


num1=alltrim(thisform.ym.page3.pageframe3.page3.text1.value)
num2=alltrim(thisform.ym.page3.pageframe3.page3.text2.value)
num3=alltrim(thisform.ym.page3.pageframe3.page3.text3.value)


set exact on  && 不允许输入空数据
do case
    case num1=""
         messagebox("学号不能为空!",0+48,"系统提示!")
         this.parent.text1.setfocus
    case num2=""
         messagebox("违纪情况不能为空!",0+48,"系统提示!")
         this.parent.text2.setfocus
    case num3=""
         messagebox("违纪日期不能为空!",0+48,"系统提示!")
       this.parent.text3.setfocus
    endcase
   messagebox("确认添加么?",1+64+0,"系统提示!")
   insert into xswjxx values (num1,num2,num3)
 select * from  xsrwjxx into cursor  xswjtemp
 thisform.ym.page3.pageframe3.page3.grid1.recordsource="xswjtemp"
  thisform.refresh
搜索更多相关主题的帖子: 文本框 
2014-05-12 08:34
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:3 
用ctod()转换一下看看
2014-05-12 08:46
lck
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-25
收藏
得分:0 
   谢谢   我先试试
2014-05-12 08:48
lck
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-25
收藏
得分:0 
我写了 还是一样的错误
2014-05-12 09:03
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:3 
case num1=""
这种设置是没用的,改为
case EMPTY(num1)

试试
NUM2,NUM3类似

[ 本帖最后由 sdta 于 2014-5-12 09:23 编辑 ]

坚守VFP最后的阵地
2014-05-12 09:15
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用lck在2014-5-12 08:34:56的发言:

我写了一段vf代码,文本框的值我已经设置为日期型了,为什么运行时一直提示参数类型不匹配?求高手指点!


num1=alltrim(thisform.ym.page3.pageframe3.page3.text1.value)
num2=alltrim(thisform.ym.page3.pageframe3.page3.text2.value)
num3=alltrim(thisform.ym.page3.pageframe3.page3.text3.value)


set exact on  && 不允许输入空数据
do case
    case num1=""
         messagebox("学号不能为空!",0+48,"系统提示!")
         this.parent.text1.setfocus
    case num2=""
         messagebox("违纪情况不能为空!",0+48,"系统提示!")
         this.parent.text2.setfocus
    case num3=""
         messagebox("违纪日期不能为空!",0+48,"系统提示!")
       this.parent.text3.setfocus

从上面红色代码可以看出:NUM3应该是日期型,那么
num3=alltrim(thisform.ym.page3.pageframe3.page3.text3.value) 是错误的,应该为
num3=thisform.ym.page3.pageframe3.page3.text3.value
    endcase
   messagebox("确认添加么?",1+64+0,"系统提示!")
   insert into xswjxx values (num1,num2,num3)
 select * from  xsrwjxx into cursor  xswjtemp
 thisform.ym.page3.pageframe3.page3.grid1.recordsource="xswjtemp"
  thisform.refresh

坚守VFP最后的阵地
2014-05-12 09:21
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
说明楼主对VFP中的常用函数的使用方法,还没有掌握好,建议要经常看看VFP帮助文件

坚守VFP最后的阵地
2014-05-12 09:22
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:3 
从楼主书写的代码中不难发现,楼主的基本功还需要加强:
1. 当控件的 Value 属性为字符型时,才可以使用 Alltrim()函数。正如 sdta 版主所分析的,num3 可能是日期型的,这样在对其执行 Alltrim()时肯定出错。
2. 使用 Set Exact On 防止输入空数据不妥。应该使用 empty()函数。
   如:case empty(num1)
         messagebox('学号不能为空!',48,'提示')
3. 若检测到用户输入值不合法,在给出提示后,仅靠 THISFORM.控件.SetFocus 无法中断后续代码的执行,还应该添加 Return 语句
4. 在添加数据之前,再让用户确认一下是一个好习惯。但是楼主的 messagebox()有问题。应改为:
   if messagebox("确认添加么?",1+64,"系统提示") = 2    && 单击“取消”时,中断处理
        return
   endif


[ 本帖最后由 liuxingang28 于 2014-5-12 13:02 编辑 ]

泉城飞狐
2014-05-12 12:59
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:3 
SET EXACT ON是设置字符型数据进行精确比较,但是你输入的数据有日期型数据,所以还是使用EMPTY()进行判断比较好。
2014-05-12 14:59
lck
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-4-25
收藏
得分:0 
非常感谢各位的指导,代码改正确了
2014-05-12 20:50
快速回复:函数参数类型不匹配
数据加载中...
 
   



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

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