回 帖 发 新 帖 刷新版面

主题:[原创]请教

USE date\hz EXCLUSIVE
     SELECT * FROM db!hz WHERE  allt(Hz.户号) = allt(STR(thisform.text3.Value)) INTO TABLE date\cybb2.dbf
请大师帮助解决一下,以上语句为什么运行提示函数参数值、类型或数目无效,差误出在那

回复列表 (共10个回复)

沙发

thisform.text3.Value
这个文本框的值是什么类型?

板凳


是字符型,我没加ATR函数也有这个问题

3 楼

既然是字符型就不必要加str(),否则会出错。
那Hz.户号这个字段类型?

4 楼


起初我就是这样写的 SELECT * FROM db!hz WHERE  allt(Hz.户号) = allt(thisform.text3.Value)) INTO TABLE date\cybb2.dbf,
Hz.户号也是字符型,就出现这种差误,而后我加了ART函数还是出现差误,在这里多谢指教,望能给出差误原因

5 楼

按楼主说的情况,似乎Hz.户号是数字型字段,试试:
SELECT * FROM db!hz WHERE  allt(str(Hz.户号)) = allt(thisform.text3.Value)) INTO TABLE date\cybb2.dbf,

6 楼


我看了呀,是字符型呀

7 楼

上传你的表和表单

8 楼

USE date\hz EXCLUSIVE
     SELECT * FROM db!hz WHERE  allt(Hz.户号) = allt(STR(thisform.text3.Value)) INTO TABLE date\cybb2.dbf

---------------------------------------------------------------------------------------

楼主,说点题外话:
既然第一句已打开了hz表,select语句就应该如下写:
select * from hz where alltr(户号)==alltr(thisform.text3.value) into table date\cybb2

另外,要解决问题,请您按下列语句执行:

if !used('hz')
  use date\hz exclusive in 0
endif
select hz
hh = iif(type('户号')='C','alltr(户号)','alltr(str(户号))')
txt3 =thisform.text3.value
txt3 = iif(type('txt3')='C',alltr(txt3),alltr(str(txt3)))
select * from hz where &hh==txt3 into table date\cybb2
------------------------------------------------------------------

我没调试,请楼主看这段代码能否解决您的问题。



9 楼

在表单的Init事件中加入:
thisform.text3.value=""
确保text3中输入的是字符型。


SELECT * FROM db!hz WHERE  allt(Hz.户号) = allt(thisform.text3.Value) INTO TABLE date\cybb2.dbf,

10 楼

九楼的办法的确也是一招,但九楼的Select语句中还用"Hz.户号"这样的表示,您觉得"Hz."是不是多余,还有最后的".dbf"必要吗? 这不仅仅是写法上是否精练的问题,而且是概念问题.请您思量.

我来回复

您尚未登录,请登录后再回复。点此登录或注册