标题:操作符/操作类型不匹配
只看楼主
GYYgyy124
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2013-10-24
结帖率:100%
已结贴  问题点数:20 回复次数:10 
操作符/操作类型不匹配
SELECT 纱库数据
i=reccount()
local array zdbh[i]
local array x1[i]
shuruzhi=thisform.编号1.value
store 编号  to  zdbh[i]
 x1[i]=str(val(left(zdbh[i],8)))
   for i=1 to i
       if alltrim(STR(x1[i]))=alltrim(STR(dtoc(date(),1)))
          calculate max(编号) to maxbh  &&在数据表中查找出序号最大的记录
          szbh=val(right(maxbh,8))  &&取出数字部分
          if szbh=0 then  &&判断数字部分是否为0
             shuruzhi=DTOC(DATE(),1)+"00000001"
          else
             shuruzhi=DTOC(DATE(),1)+padl(alltrim(str(szbh+1)),8,'0')  &&生成自动编号
        endif
  else
      shuruzhi=DTOC(DATE(),1)+"00000001"
endif
endfor  else
      shuruzhi=DTOC(DATE(),1)+"00000001"
endif
endfor
自动编号的一个问题,运行到上面红色部分以后提示操作符/操作类型不匹配,求高手指教....
搜索更多相关主题的帖子: 记录 local 最大的 数据表 
2014-01-06 15:06
Eric1111
Rank: 2
等 级:论坛游民
威 望:1
帖 子:183
专家分:88
注 册:2013-11-25
得分:2 
论坛的高手教我的,这种就是变量=变量,是不行的,左边不用alltrim.
收到的鲜花
  • GYYgyy1242014-01-07 09:11 送鲜花  2朵   附言:谢谢
2014-01-06 15:13
GYYgyy124
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2013-10-24
得分:0 
这句改为 if STR(x1[i])==STR(dtoc(date(),1))还是不行。
2014-01-06 15:21
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:2 
STR(dtoc(date(),1))  其中 dtoc本身就是c型  为啥还要用str强制转换
收到的鲜花
  • GYYgyy1242014-01-07 09:11 送鲜花  2朵   附言:谢谢版主

DO IT YOURSELF !
2014-01-06 15:26
bccn0906
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:蜘蛛侠
威 望:2
帖 子:414
专家分:1183
注 册:2013-10-16
得分:2 
以下是引用GYYgyy124在2014-1-6 15:21:28的发言:

这句改为 if STR(x1[i])==STR(dtoc(date(),1))还是不行。
if allt(x1[i])==allt(dtoc(date(),1))


[ 本帖最后由 bccn0906 于 2014-1-6 16:25 编辑 ]
收到的鲜花
  • GYYgyy1242014-01-07 09:10 送鲜花  2朵   附言:谢谢
2014-01-06 16:20
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:2 
以下是引用bccn0906在2014-1-6 16:20:24的发言:

if allt(x1)==allt(dtoc(date(),1))
IF ALLTRIM(X[I])=DTOS(DATE())

[ 本帖最后由 sdta 于 2014-1-6 18:19 编辑 ]
收到的鲜花
  • GYYgyy1242014-01-07 09:09 送鲜花  2朵   附言:谢谢!

坚守VFP最后的阵地
2014-01-06 18:17
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:1 
要多看看VFP的帮助文件

坚守VFP最后的阵地
2014-01-06 18:20
GYYgyy124
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2013-10-24
得分:0 
谢谢各位!
2014-01-06 19:35
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:8 
以下是引用GYYgyy124在2014-1-6 15:06:28的发言:

SELECT 纱库数据
i=reccount()
local array zdbh[i]
local array x1[i]
shuruzhi=thisform.编号1.value
store 编号  to  zdbh[i]
x1[i]=str(val(left(zdbh[i],8)))
   for i=1 to i
       if alltrim(STR(x1[i]))=alltrim(STR(dtoc(date(),1)))
          calculate max(编号) to maxbh  &&在数据表中查找出序号最大的记录
          szbh=val(right(maxbh,8))  &&取出数字部分
          if szbh=0 then  &&判断数字部分是否为0
             shuruzhi=DTOC(DATE(),1)+"00000001"
          else
             shuruzhi=DTOC(DATE(),1)+padl(alltrim(str(szbh+1)),8,'0')  &&生成自动编号
        endif
  else
      shuruzhi=DTOC(DATE(),1)+"00000001"
endif
endfor  else
      shuruzhi=DTOC(DATE(),1)+"00000001"
endif
endfor
自动编号的一个问题,运行到上面红色部分以后提示操作符/操作类型不匹配,求高手指教....

问题出在这几句红色命令上:你把变量I赋值为一个定值,也就是表文件的记录数,然后对Adbh[I]和X1[I]进行赋值。你的用意是对该两个数组的全部元素赋值,但实际上只对这两个数组的最后一个元素分别赋了值,而其它的元素仍为初始值.F.(逻辑型)。这时,当程序执行到橙色行时,由于X1[1]为.F.,不能对其进行STR()函数操作(该函数只对数值表达式有效),于是发生了操作类型不匹配的错误;当然,橙色命令中的后半部分也矛盾了:DTOC()函数已经将日期型表达式转换成了字符串,就无法对其进行STR()函数操作。所以,本句一次有两处出现操作类型不匹配的错误。
收到的鲜花
  • GYYgyy1242014-01-07 09:06 送鲜花  3朵   附言:谢谢版主,我再好好研究研究!
  • GYYgyy1242014-01-07 09:08 送鲜花  2朵   附言:谢谢,我再好好研究研究
2014-01-06 20:40
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:3 
程序有不少问题,如第3行就很容易出错,如果表中无任何记录,recc()得到的结果是0,此时定义一个下标为零的数组就会出错。
收到的鲜花
  • GYYgyy1242014-01-07 09:09 送鲜花  2朵   附言:谢谢,我再好好研究研究!

活到老,学到老! http://www. E-mail:hu-jj@
2014-01-06 22:36



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




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

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