主题:[原创]请教
hdzsy_001
[专家分:0] 发布于 2010-01-28 20:03:00
USE date\hz EXCLUSIVE
SELECT * FROM db!hz WHERE allt(Hz.户号) = allt(STR(thisform.text3.Value)) INTO TABLE date\cybb2.dbf
请大师帮助解决一下,以上语句为什么运行提示函数参数值、类型或数目无效,差误出在那
回复列表 (共10个回复)
沙发
wzxc [专家分:9440] 发布于 2010-01-28 21:29:00
thisform.text3.Value
这个文本框的值是什么类型?
板凳
hdzsy_001 [专家分:0] 发布于 2010-01-28 22:31:00
是字符型,我没加ATR函数也有这个问题
3 楼
wzxc [专家分:9440] 发布于 2010-01-29 09:15:00
既然是字符型就不必要加str(),否则会出错。
那Hz.户号这个字段类型?
4 楼
hdzsy_001 [专家分:0] 发布于 2010-01-29 09:30:00
起初我就是这样写的 SELECT * FROM db!hz WHERE allt(Hz.户号) = allt(thisform.text3.Value)) INTO TABLE date\cybb2.dbf,
Hz.户号也是字符型,就出现这种差误,而后我加了ART函数还是出现差误,在这里多谢指教,望能给出差误原因
5 楼
qjbzjp [专家分:8830] 发布于 2010-01-29 09:45:00
按楼主说的情况,似乎Hz.户号是数字型字段,试试:
SELECT * FROM db!hz WHERE allt(str(Hz.户号)) = allt(thisform.text3.Value)) INTO TABLE date\cybb2.dbf,
6 楼
hdzsy_001 [专家分:0] 发布于 2010-01-29 10:10:00
我看了呀,是字符型呀
7 楼
wzxc [专家分:9440] 发布于 2010-01-29 11:15:00
上传你的表和表单
8 楼
afoxer [专家分:360] 发布于 2010-01-29 12:04:00
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 楼
qjbzjp [专家分:8830] 发布于 2010-01-29 12:38:00
在表单的Init事件中加入:
thisform.text3.value=""
确保text3中输入的是字符型。
SELECT * FROM db!hz WHERE allt(Hz.户号) = allt(thisform.text3.Value) INTO TABLE date\cybb2.dbf,
10 楼
afoxer [专家分:360] 发布于 2010-01-29 23:54:00
九楼的办法的确也是一招,但九楼的Select语句中还用"Hz.户号"这样的表示,您觉得"Hz."是不是多余,还有最后的".dbf"必要吗? 这不仅仅是写法上是否精练的问题,而且是概念问题.请您思量.
我来回复