FAQ > 金融建模 > 数据提取 > 基本面数据

Q:如何获取个股指定报告期财务数据发生调整的字段    

  • A:财务数据如果发生调整,天软会记录多条数据,数据表现为截止日相同而公布日不同
     新的报告都有哪些字段发生过调整需逐一比较,实现过程参考以下案例:
    实现案例
    获取模型getReportAdjustmentField后调用即可
    实现代码:
      //获取万科A2015年年报利润分配表的字段调整情况
      return getReportAdjustmentField("SZ000002",20151231,46);
     

    getReportAdjustmentField
    实现模型:附件:getReportAdjustmentField.fun
    Function getReportAdjustmentField(stock,rdate,infoid);
    Begin
    {
      说明:获取个股指定报告期财报数据的调整字段
      参数:
        stock:string 股票代码
        rdate:Int 报告期
        infoid:Int 报表InfoID
      返回:数组,发生调整的字段信息,没有调整返回空数组
    }

      setsysparam(pn_reportmode(),-1);//取全部
      data:=select * from infotable infoid of stock
              where ["截止日"]=rdate end;
      if length(data)<2 then return array();

      tarr:=data[:,"公布日"];
      zhs:= nchoosek(tarr,2); //公布日分组
      data:= `NormalTabletoStrSubscript(data,"公布日");
      rt:=array();
      for j in zhs do
      begin
        info:=data;
        zh:=zhs[j,:];
        rdate1:=Max(zh[0],zh[1]);
        rdate2:=min(zh[0],zh[1]);
        sdate1:=FloatToStr(rdate1);
        sdate2:=FloatToStr(rdate2);
        dbfield:=sdate1$"-"$sdate2;
        //对比不同报告期数据
        info[:,dbfield]:=info[:,rdate1].=info[:,rdate2];
        tem:= select [rdate1],[rdate2]
           from info where [dbfield]=0 end;
        cols:=mrows(tem,1);
        rt[n,"StockID"]:=stock;
        rt[n,"StockName"]:=stockname(stock);
        rt[n,"数据表"]:=bname(infoid);
        rt[n,"截止日"]:=rdate;
        rt[n,"调整前公布日"]:=rdate2;
        rt[n,"调整后公布日"]:=rdate1;
        rt[n,"调整字段"]:=cols;
        rt[n++,"调整详情"]:=tem;
      end
      return rt;
    End;

    相关说明
    FAQ:Q:财务数据的调整前与调整后的表格数据提取:pn_reportmode()
    FAQ:在三大报表(44、46、48)中,截止日、数据报告期、公布日分别指什么?它们之间有何区别?