我要把以前的DBF导入SQL内,导入、导出也都可以了,最后发现DBF里有个字段里在开头和其它位置内包含了CHR(0)的字符,造成那个字段的内容无法导入,全是空!我用了Replace字符T换,不行
用了POS查找字段内CHR(0)再读取,不行,根本返回的为0
用SQL自定义函数来判断再改写,也不行,当把字段发送到函数中时,内容已经是空的了
最后用TTable控件一个个字段调用附值,到那个字段时再做判断更改,还是不行,好像一被DELPHI调用时就已经是空值了。SQL的函数是这样判断的
create function TCHR(@hexstr varchar(8))
returns varchar(8)
begin
declare @a int,@c varchar(8)
set @a=1
set @c=''
while @a<=len(@hexstr)
begin
if substring(@hexstr,@a,1)=char(0)
set @c=@c+'M'
else set @c=@c+substring(@hexstr,@a,1)
set @a=@a+1
end
return @c
end而用TTABLE控件,我用ShowMessage
ShowMessage(copy(Table1.FieldValues['字段'],pos(chr(0),Table1.FieldValues['字段'])+1,100));
这个POS找到的是0
ShowMessage(length(Table1.FieldValues['字段']));
这个显示的是0
Table1.FieldByName('字段').AsString;
Table1.FieldByName('字段').AsWideString;
用这两个也是空和0值请高手帮忙下,谢谢了,现在我是没什么办法了.我认为,好像读出来之前已经没CHR(0)裁断了
用了POS查找字段内CHR(0)再读取,不行,根本返回的为0
用SQL自定义函数来判断再改写,也不行,当把字段发送到函数中时,内容已经是空的了
最后用TTable控件一个个字段调用附值,到那个字段时再做判断更改,还是不行,好像一被DELPHI调用时就已经是空值了。SQL的函数是这样判断的
create function TCHR(@hexstr varchar(8))
returns varchar(8)
begin
declare @a int,@c varchar(8)
set @a=1
set @c=''
while @a<=len(@hexstr)
begin
if substring(@hexstr,@a,1)=char(0)
set @c=@c+'M'
else set @c=@c+substring(@hexstr,@a,1)
set @a=@a+1
end
return @c
end而用TTABLE控件,我用ShowMessage
ShowMessage(copy(Table1.FieldValues['字段'],pos(chr(0),Table1.FieldValues['字段'])+1,100));
这个POS找到的是0
ShowMessage(length(Table1.FieldValues['字段']));
这个显示的是0
Table1.FieldByName('字段').AsString;
Table1.FieldByName('字段').AsWideString;
用这两个也是空和0值请高手帮忙下,谢谢了,现在我是没什么办法了.我认为,好像读出来之前已经没CHR(0)裁断了
解决方案 »
- vclzip 组建可以直接从资源里调用ZIP解压吗
- DBGridEh 输入的救命问题!!!
- 菜鸟求救
- 关于FileWrite函数的简单问题,盼答,100分.
- 通过ado访问access,请问怎么样按日期进行查询,语句怎么写?日期格式是什么?
- 急!急!急!:请问ToolBar2000控件能使用Menu组件吗?
- ******一个初级程序员今天疑惑的问题!!!!!!
- 对是否是32CPU和64位双核CPU兼容的疑惑?
- 到哪里可以下载到JBuilder5
- 奇哉怪也???????????
- 在不同操作系统下dephi访问oracle10g的疑问?????请各位给些指示
- 在Tchart横轴上如何实时系统时间显示
你可以在SQL SERVER中用导入导出向导看看行不行?如果导入导出向导都不行,可以确认通过程序来导是没有办法了。如果行,那么先将其手工导入为SQL SERVER的临时表,然后再用程序导。如果不行,就想办法在foxbase/foxpro/dbase等软件中看看有没有办法对这个字段进行处理。如果还是不行,你就自己想办法分析DBF的文件结构吧……Good Luck.