一个数据库从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, 什么原因, 如何解决请大家帮忙!