关于Memo类型数据的数据库转移问题

yaos 2006-05-14 01:09:06
一个数据库从Access转移到SQL2000
其中有Memo类型
使用下面函数逐个表转移
procedure CopyTable(SourceTable, DestTable: TADOTable; TableName: string);
var
i, j, sFieldCount, dFieldCount: integer;
sFiledName, dFieldName: string;
FieldNameList: TStrings;
MemoryStream: TMemoryStream;
tmp: String;
begin
SourceTable.Close;
DestTable.Close;
SourceTable.TableName := TableName;
DestTable.TableName := TableName;
SourceTable.Open;
DestTable.Open;
sFieldCount := SourceTable.FieldCount;
dFieldCount := DestTable.FieldCount;
FieldNameList := TStringList.Create;
for i := 0 to sFieldCount - 1 do
for j := 0 to dFieldCount - 1 do
if UpperCase(Sourcetable.Fields[i].FieldName) = UpperCase(DestTable.Fields[j].FieldName) then
begin
FieldNameList.Add(Sourcetable.Fields[i].FieldName);
break;
end;

Sourcetable.First;
while not Sourcetable.Eof do
begin
DestTable.Insert;

for i := 0 to FieldNameList.Count - 1 do
if DestTable.FieldList.FieldByName(FieldNameList[i]).CanModify then
if not SourceTable.FieldByName(FieldNameList[i]).IsNull then
begin
case DestTable.FieldList.FieldByName(FieldNameList[i]).DataType of
ftBlob:
begin
MemoryStream := TMemoryStream.Create;
TBlobField(SourceTable.FieldByName(FieldNameList[i])).SaveToStream(MemoryStream);
MemoryStream.Position := 0;
TBlobField(DestTable.FieldByName(FieldNameList[i])).LoadFromStream(MemoryStream);
MemoryStream.Free;
end;
ftmemo:
begin
MemoryStream := TMemoryStream.Create;
TMemoField(SourceTable.FieldByName(FieldNameList[i])).SaveToStream(MemoryStream);
MemoryStream.Position := 0;
TMemoField(DestTable.FieldByName(FieldNameList[i])).LoadFromStream(MemoryStream);
MemoryStream.Free;
if DestTable.FieldByName(FieldNameList[i]).IsNull then // (1)
DestTable.FieldByName(FieldNameList[i]).AsString := ' '; // (2)
end;

else
begin
tmp := SourceTable.FieldByName(FieldNameList[i]).AsString;
DestTable.FieldByName(FieldNameList[i]).AsString := tmp;
end;
end;
end;
Sourcetable.Next;
end;
SourceTable.First;
SourceTable.Close;
DestTable.Post;
DestTable.First;
DestTable.Close;
FieldNameList.Free;
end;

Access表有字段为Memo型, 转移到SQL为Text型
为必须字段 不能为空
但原始Access表为空字符 ""
如果不加(1)(2)句 则拷贝过去为<NULL>空值,系统出错
请问如何解决?

另外有memo字段原始数据为WINKT,拷贝过去TEXT字段为W I N K T, 什么原因, 如何解决

请大家帮忙!
...全文
135 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaos 2006-05-14
  • 打赏
  • 举报
回复
用程序实现啊
todouwang 2006-05-14
  • 打赏
  • 举报
回复
你为什么不使用sql server的导入导出?
yaos 2006-05-14
  • 打赏
  • 举报
回复
我晕

各位高手给我看看啊

难道,都嫌弃这问题太简单么

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧