[WR3.0]VISUAL C++での作成について

HOME › フォーラム › 旧サポート掲示板 › [WR3.0]VISUAL C++での作成について

  • このトピックは空です。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #922
    佐久間
    ゲスト

    いつもお世話になっております。
    すいませんが教えて頂けないでしょうか。

    以前、Visual C++ の作成について教えて頂いたのですが、
    この処理上で、レポート上に、オブジェクトが存在するかどうかを、例外処理に行く前に判定を行なう事ができないでしょうか?
    現在、私の作成したプログラムでは、レポート上にオブジェクトが無い場合はセットをしないような処理になっていまして、例外処理で判定をしてしまうと大量の例外が発生する状況になってしまいました。(つまり、レポートにオブジェクトがある場合のみ、データをセットする方式となっています)
    そうしますと、処理終了に時間がかかるだけでなく、coredump のウインドウ警告が出る事も有るみたいです。

    すいませんが、御回答をよろしくお願いします。

    CWRReport objReport1;
    CWRReport objReport2;
    CWRPreview objPreview;
    CString text;

    CWRLayer objLayer;
    CWRObject objWRObj;
    VARIANT val;

    try
    {

    UpdateData(FALSE);

    objReport1 = m_wr3axcl.LoadReport(“送付状.W30”);

    //レイヤーオブジェクトを取得します
    objLayer = objReport1.GetLayer( 1 ) ;

    //レポートをクリアします
    objLayer.ClearData() ;

    //テキストオブジェクトを取得します
    text = “wrtToShimei”;

    ZeroMemory( &val , sizeof(val) ) ;

    val.vt = VT_BSTR; text.SetSysString( &val.bstrVal );

    objWRObj = objLayer.WRObject(val); ←←←←←←←←←(☆この部分で例外に行ってしまいます☆)

    //テキストオブジェクトに文字列をセットします
    objWRObj.SetText( “株式会社 ソフトウィング” );

    /*フレームオブジェクト内のテキストオブジェクトを取得する場合には
     オブジェクト名を “FrameObject名.TextObject名” と指定します。*/

    ///////////////////////////////////////////////

    objPreview = m_wr3axcl.CreatePreview();

    objPreview.OpenPreview( 1 ) ;

    objPreview.ReportPrint( objReport1 );

    objReport1.Delete() ;

    }

    catch( CException* Excption )
    {

    text = m_wr3axcl.GetLastErrorText();

    MessageBox( text ) ;

    objReport1.Delete() ;

    objPreview.Delete() ;

    }

    #923
    Hirayama
    ゲスト

    いつもお世話になっております。

    WRObjectの引数にはオブジェクト名の他にインデックスを指定することが
    できます。また、Layerオブジェクトにはそのレイヤー上にあるWRObjectの
    個数を取得するObjectCountプロパティが用意されております。それにより
    全WRObjectの名称比較を行い、オブジェクトの存在確認をする事が可能かと
    思われます。以下に記述例を掲載します。

    CWRReport objReport ;
    VARIANT Index;

    //レイヤー上に存在するオブジェクトの個数を取得します
    int MaxCount = objReport.GetLayer(1).GetObjectCount() ;

    VariantInit(&Index);

    Index.vt = VT_I4;

    //全てのオブジェクトに対して名称比較を行います
    for ( Index.intVal = 1 ; Index.intVal <= MaxCount; Index.intVal++ )
    {

    if( objReport.GetLayer(1).WRObject(Index).GetName() == “オブジェクト名” )
    {

    //存在を確認した場合の処理を記述します

    }

    }

    以上宜しくお願い致します。

    #924
    佐久間
    ゲスト

    御回答ありがとうございました。
    さっそく、プログラムに組み込んでみます。

3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • フォーラム「旧サポート掲示板」には新規投稿および返信を追加できません。