vfp找不到变量 急求答案!~高分重谢~!
PROCEDUREFFflag='1'DOWHILEflag='1'INPUTSPACE(9)+"请输入要查询的姓名(或其中一个或多个字)";TOxx;READmm=AL...
PROCEDURE FF
flag= '1'
DO WHILE flag= '1'
INPUT SPACE(9)+"请输入要查询的姓名(或其中一个或多个字)";
TO xx;
READ
mm=ALLTRIM(xx)
LOCATE FOR "&mm"$姓名
IF FOUND()
?"请按EXC继续"
BROWSE TITLE '通信录'+SPACE(7)+'&xx'+'资料';
FOR "&mm"$姓名
ELSE
SAY"没有这个人"
ENDIF
SAY"是否继续查询?(Y\N):"TO NEST
IF UPPER(NEST)="N"
flag='0'
ENDIF
ENDDO
就这一小段 查询 模块,不管输入什么 都提示 找不到 变量~!急求 答案 展开
flag= '1'
DO WHILE flag= '1'
INPUT SPACE(9)+"请输入要查询的姓名(或其中一个或多个字)";
TO xx;
READ
mm=ALLTRIM(xx)
LOCATE FOR "&mm"$姓名
IF FOUND()
?"请按EXC继续"
BROWSE TITLE '通信录'+SPACE(7)+'&xx'+'资料';
FOR "&mm"$姓名
ELSE
SAY"没有这个人"
ENDIF
SAY"是否继续查询?(Y\N):"TO NEST
IF UPPER(NEST)="N"
flag='0'
ENDIF
ENDDO
就这一小段 查询 模块,不管输入什么 都提示 找不到 变量~!急求 答案 展开
3个回答
展开全部
我看你们上面的回答依然解决不了提问者的问题, 尽管他的程序的确有些问题, 但是仍可以运行( syc_xhm的修改很好). 提问者不了解这个输入时的应注意的内容, 应该来说, 是你的粗心造成的.
Input <Comment> To <Var>, 在屏幕中输入时的值是所有值, 即包括所有变量类型, 数值,字符,日期等等.
所以你只输入一个或几个字, 电脑为了不违背你的意愿只能以出错提示. 因为你输入的字, 被当成变量了, 也就是不管你输入什么(XXX), 电脑都会提示 找不到变量"XXX".
如果你需要输入字符就只能用字符定界符, 如[],"",'',或函数Translate(45), dtoc(date())等等.
你想输入日期就只能用日期定界符, 如{^2010-06-04} 或函数 ctod("2010-06-04"), 及 date(2010,06,04)
Derek Shu
Input <Comment> To <Var>, 在屏幕中输入时的值是所有值, 即包括所有变量类型, 数值,字符,日期等等.
所以你只输入一个或几个字, 电脑为了不违背你的意愿只能以出错提示. 因为你输入的字, 被当成变量了, 也就是不管你输入什么(XXX), 电脑都会提示 找不到变量"XXX".
如果你需要输入字符就只能用字符定界符, 如[],"",'',或函数Translate(45), dtoc(date())等等.
你想输入日期就只能用日期定界符, 如{^2010-06-04} 或函数 ctod("2010-06-04"), 及 date(2010,06,04)
Derek Shu
展开全部
READ
在@<行,列> say <表达式> get <变量名>中read语句才有效,在这里read没有意义。
BROWSE TITLE "通信录"+SPACE(7)+"&xx"+"资料" FOR "&mm"$姓名
TITLE "通信录"+SPACE(7)+"&xx"+"资料" 这一部分看不懂。
SAY"没有这个人" 应改为:?"没有这个人"
SAY"是否继续查询?(Y\N):"TO NEST
应改为:wait "是否继续查询?(Y\N):"TO NEST
*******************************************************************************
此程序中好多个地方是弄复杂了。"&mm"完全可以直接写mm,"&xx"可以直接写xx, 举例说明,在input 名中给变量xx输入值为"张明",
"&xx"的值就是"张明",其实就是变量xx的值,何必多此一举呢?希望共同学习!
要是让我编写,程序如下 :
PROCEDURE FF
flag= "1"
DO WHILE flag= "1"
INPUT SPACE(9)+"请输入要查询的姓名(或其中一个或多个字)" TO xx
mm=ALLTRIM(xx)
LOCATE FOR mm$姓名
IF FOUND()
?"请按EXC继续"
list '通信录'+SPACE(7)+xx+"资料" FOR mm$姓名
ELSE
?"没有这个人"
ENDIF
wait "是否继续查询?(Y\N):" TO NEST
IF UPPER(NEST)="N"
flag="0"
ENDIF
ENDDO
return
在@<行,列> say <表达式> get <变量名>中read语句才有效,在这里read没有意义。
BROWSE TITLE "通信录"+SPACE(7)+"&xx"+"资料" FOR "&mm"$姓名
TITLE "通信录"+SPACE(7)+"&xx"+"资料" 这一部分看不懂。
SAY"没有这个人" 应改为:?"没有这个人"
SAY"是否继续查询?(Y\N):"TO NEST
应改为:wait "是否继续查询?(Y\N):"TO NEST
*******************************************************************************
此程序中好多个地方是弄复杂了。"&mm"完全可以直接写mm,"&xx"可以直接写xx, 举例说明,在input 名中给变量xx输入值为"张明",
"&xx"的值就是"张明",其实就是变量xx的值,何必多此一举呢?希望共同学习!
要是让我编写,程序如下 :
PROCEDURE FF
flag= "1"
DO WHILE flag= "1"
INPUT SPACE(9)+"请输入要查询的姓名(或其中一个或多个字)" TO xx
mm=ALLTRIM(xx)
LOCATE FOR mm$姓名
IF FOUND()
?"请按EXC继续"
list '通信录'+SPACE(7)+xx+"资料" FOR mm$姓名
ELSE
?"没有这个人"
ENDIF
wait "是否继续查询?(Y\N):" TO NEST
IF UPPER(NEST)="N"
flag="0"
ENDIF
ENDDO
return
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你没有打开数据表吧
在 LOCATE FOR zhiq 要先打开表, 或者转到正确的工作区
在 LOCATE FOR zhiq 要先打开表, 或者转到正确的工作区
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询