再次被小问题难倒~~:((50分)

  • 主题发起人 主题发起人 gxw
  • 开始时间 开始时间
G

gxw

Unregistered / Unconfirmed
GUEST, unregistred user!
对paradox数据库执行以下语句没能通过(name,sendok字段类型均为A,S):
sql('insert into outxm_z (name,sendok) select name,6 from main1_xm');
execsql;

错误为类型不匹配:Type mismatch in expression.
也试过使用参数代入parambyname('sendok').asinteger:=6; 错误相同。
 
郁闷,单步执行select name,6 from main1_xm是没问题的,但结构显示6是浮点数N了。各位有何解决办法?
 
改用TTable 操作试试,反多几行语句也不复杂
Table_main1_xm.first;
while not Table_main1_xm.eof do
begin
Table_outxm_z.insert;
Table_outxm_z.fieldbyname('name').asstring:=Table_main1_xm.fieldbyname('name').asstring;
Table_outxm_z.fieldbyname('sendok').asinteger:=6;
Table_outxm_z.post;
Table_main1_xm.next;
end;
 
浮点型的话,应该是AsFloat
 
使用 SQL的强制类型转换
 
其实只要将6强制为integer类型就行,但我不知道sql里怎么写~:)
这程序原来用在mdb上啥问题也没,转paradox的db就冒出这个了。至于用Table暂时不考虑,记录太多,一条条处理颇慢。
 
"至于用Table暂时不考虑,记录太多,一条条处理颇慢" 如果是SQL你的说法是正确的,但paradox 就不是,你用Uedit打开paradox的数据文件看看就知道了,SQL语言对paradox同样是一条条处理,象这样简单的写入操作,10万条也不过1 ,2分钟.
http://delphibbs.com/keylife/iblog_show.asp?xid=24972
这是上次为一个富翁写的测试程序,一条记录30个字段20万条记录4分钟不到
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
743
import
I
I
回复
0
查看
629
import
I
I
回复
0
查看
353
import
I
后退
顶部