字段类型为image的数据从sql导入到access中,导入代码为:
with AccessQuery do
begin
close;
sql.clear;
sql.add('insert into table1(id,zp) values(:id,:zp)');
parameters[0].value := SqlQuery.fieldbyname('id').asinteger;
if SqlQuery.fieldbyname('zp').is null then
begin
parameters[1].datatype := ftblob;
parameters[1].value := null;
end else
begin
m := TMemoryStream.create;
TBlobField(SqlQuery.fieldbyname('zp')).SaveToStream(m);
m.position := 0;
parameters[1].LoadFromStream(m,ftBlob);
m.free;
end;
ExecSQL;
end;再取access数据库中的数据zp已经不是null了,无论是用select * from table1 where isnull(zp),
还是用field.isnull,但field.datasize为0.百思不得其解,来坛发个贴问问高手们
with AccessQuery do
begin
close;
sql.clear;
sql.add('insert into table1(id,zp) values(:id,:zp)');
parameters[0].value := SqlQuery.fieldbyname('id').asinteger;
if SqlQuery.fieldbyname('zp').is null then
begin
parameters[1].datatype := ftblob;
parameters[1].value := null;
end else
begin
m := TMemoryStream.create;
TBlobField(SqlQuery.fieldbyname('zp')).SaveToStream(m);
m.position := 0;
parameters[1].LoadFromStream(m,ftBlob);
m.free;
end;
ExecSQL;
end;再取access数据库中的数据zp已经不是null了,无论是用select * from table1 where isnull(zp),
还是用field.isnull,但field.datasize为0.百思不得其解,来坛发个贴问问高手们
然后ADO/BDE判断到这一点,自动将NULL转成空串了