具体是这样  
    程序中是将ORACLE的数据扒出来 存放到本地的ACCESS临时表中 然后进行相关统计
    表结构是一样的,原来的就等于是吧ORACLE的表记录COPY了一份到ACCESS中
   例如:
  oracle: 张三                 1       出勤
  access: 张三                 1       出勤   姓名字段原来是只有一个人的名字,现在可能出现多个人的名字用/分割
需要实现以下功能:
   例如ORACLE中的一条记录 如
   张三/李四/王五         1          出勤
   
   变成ACCESS中的
   张三                 1          出勤
   李四                 1          出勤
   王五                 1          出勤
问下这种拆分怎么实现  谢谢

解决方案 »

  1.   

    步骤:
    1、从orcle中取出数据;
    2、判断名称字段包含多少人名,依次加入数组中;
    3、循环数组,再将其他字段一起插入Access表中;
      

  2.   

    写语句吧~substring 、replace --这个是sql的函数
      

  3.   

    能不能具体点  这是代码 if LoadFromRYCOM('VIEW_WORKLOADSTAT_ALL',qrystring,dm.Qry_WorkLoad)=1 then   
       begin
          try
            with dm do
            begin
              if Qry_WorkLoad.IsEmpty then   //从ORACLE取回的数据集
              begin
                Qry_WorkLoad.Close;
                warnmsg('您查找的数据不存在!');
                result:=false;
                exit;
              end;
              //删除本地表workloadstat数据
              DelDataTable('workloadstat');
              qrytemp.Close;
              qrytemp.SQL.Clear;
              qrytemp.SQL.Add('select * from workloadstat');
              //打开本地表workloadstat
              qrytemp.Open;
              Qry_WorkLoad.First;
              application.ProcessMessages;
              //把查询到的数据写入本地表workloadstat
              while not Qry_WorkLoad.Eof do
              begin
                //探听消息队列有无消息
                while PeekMessage(msg,0,0,0,PM_REMOVE) do
                begin
                  //处理得到的消息
                  DispatchMessage(msg);
                end;
                  //当用户点击进度窗体关闭时,ifstatprogress=false,此时此次统计就结束
                  //通常ifstatprogress=true,统计照常进行
                if IfStatProgress=true then
                begin
                    qrytemp.Append;
                    QryTemp.FieldByName('StudyID').AsVariant:=Qry_WorkLoad.FieldByName('StudyID').AsVariant;
                    QryTemp.FieldByName('Status').AsString:= Qry_WorkLoad.FieldByName('Status').AsString;
                    QryTemp.FieldByName('ClassName').AsString:= Qry_WorkLoad.FieldByName('ClassName').AsString;
                    QryTemp.FieldByName('EnrolDoctor').AsString:= Qry_WorkLoad.FieldByName('EnrolDoctor').AsString;
                    QryTemp.FieldByName('Nurse').AsString:= Qry_WorkLoad.FieldByName('Nurse').AsString;
                    QryTemp.FieldByName('CheckDoctor').AsString:= Qry_WorkLoad.FieldByName('CheckDoctor').AsString;
                    QryTemp.FieldByName('OperateDoctor').AsString:= Qry_WorkLoad.FieldByName('OperateDoctor').AsString;
                    QryTemp.FieldByName('ChiefDoctor').AsString:= Qry_WorkLoad.FieldByName('ChiefDoctor').AsString;
                    QryTemp.FieldByName('ReportDoctor').AsString:= Qry_WorkLoad.FieldByName('ReportDoctor').AsString;
                    QryTemp.FieldByName('lodgedate').AsString:= Qry_WorkLoad.FieldByName('lodgedate').AsString;
                    QryTemp.FieldByName('CheckDate').AsString:= Qry_WorkLoad.FieldByName('CheckDate').AsString;
                    QryTemp.FieldByName('ReportDate').AsString:= Qry_WorkLoad.FieldByName('ReportDate').AsString;
                    QryTemp.FieldByName('MassDoctor').AsString:= Qry_WorkLoad.FieldByName('MassDoctor').AsString;
                    QryTemp.FieldByName('num').AsVariant:=1;
                    qrytemp.Post;
                    Qry_WorkLoad.Next;
                end
                else   //用户终止统计过程
                begin
                    result:=false;
                    exit;
                end;
              end;
              Result:=True;
            end;
          except
             warnmsg('操作失败!');
             exit;
          end;
       end