0

このオプションは PowerBuilder 12.5 .NET の新機能であるはずですが、Debugger では DataStore オブジェクトにデータが表示されませんでした。デバッガーに表示されるオブジェクト情報は、「base」、「DataObject」、および「FlowDirection」のみで、それ以上のものはありません。デバッグ中に DataStore オブジェクトのデータを表示するにはどうすればよいですか?

PowerBuilder の以前のバージョンでは、Watch で SaveAs() メソッドを呼び出すことでこれを行うことができ、DataStore データはローカル ファイルに保存されていました。しかし、現在、このオプションは (ソース コードでのみ) 機能しません。") expected" が返されます。

4

3 に答える 3

0

私のアドバイスは、DataWindowsのユニットテストを行うことです。データウィンドウペインタで手動でテストするか、PowerUnitで単体テストを作成できます。デバッガーを使用しているときに、データウィンドウのデータについて不思議に思う必要はありません。デバッグしているコードがデータにアクセスしている場合は、取得している値、取得引数などが表示されます。コードがデータにアクセスしない場合、なぜそれが何であるかを気にしますか?たまたま、スキ​​ーマの変更により約30のDataWindowsでSELECTを変更したところですが、これまで誰もテストを作成していなかったため、すばらしい時間単位でテストを行っています。また、デバッグしやすいようにコードを記述してください。たとえば、戻り値を直接使用するのではなく、変数に取得します。

于 2012-09-28T16:53:56.697 に答える
0

11/2-12 に追加のパラグラフを追加 - デバッグ中にバッファ データを表示する非常にクールな方法に出くわしました。このサイトのセクションSave DataStore from Debugger を確認してください。

私がよく使用する回避策の 1 つは、データウィンドウ コントロールのクリック イベントにコードを追加し(祖先はさらに優れています)、keydown 関数を使用して、事前定義されたあいまいなキーの組み合わせが押されたことを判断することです。ある場合は、データをファイルに保存する必要があります

私は、ユーザーにファイルの種類と名前を求める一般的な機能を含む、最も一般的な種類の隠しイースターエッグ機能を作成するのが好きです。

エクセルならctl+alt+ e

テキストの場合はctl+alt+ t !

CSV のctl+alt+ c !

ctrl+alt+ a for Any (名前を付けて保存ダイアログでプロンプト)

したがって、ユーザーがctrl+alt+eを押したまま dataobjectの任意の場所をクリックすると、次のコードがトリガーされ、データが Excel に書き込まれ、Excel ファイルが自動的に開きます。私はこの機能を実稼働アプリケーションに残すことがよくあります (データの機密性に応じて、ユーザー ID をフィルタリングすることもあります)。これは優れた実稼働支援ツールだからです。当社のQA 部門も、データを簡単に文書化でき、表示されていない列も含めてすべての列を表示できる機能を気に入っています。

long ll_handle
string ls_filename, ls_null, ls_dir

if keydown(KeyControl!) and keydown(KeyAlt!) then

    // set work variables to be used in save 
    SetNull(ls_null)

    // grab handle to MDI frame window for the ShellExecute function
    ll_handle = Handle(gwMdi)

    // construct the filename using dataobject and datetime  
    ls_dir = "c:\temp"
    ls_filename = ls_dir + '\debug_dataobject_' + this.dataobject + '_date_' + string(Today(),'mmddyyhhmmss') 

    // determine if we are saving excel, text, csv, or prompting for filetype
    if keydown(keye!) then
       ls_filename =+ '.xls'
       dw_1.SaveAs(ls_filename, Excel!,True!)
    elseif keydown(keyt!) then
       ls_filename =+ '.txt'
       dw_1.SaveAs(ls_filename, Text!,True!)
    elseif keydown(keyc!) then
       ls_filename =+ '.txt'
       dw_1.SaveAs(ls_filename, Csv!,True!)
    elseif keydown(keya!) then
       ls_filename =+ ''
       // empty string forces dialog open
       dw_1.SaveAs(ls_filename)
    end if

   // now automatically open the file using default program 
   // for the file type via Windows API function
   if fileexists(ls_filename) then
      gwMdi.ShellExecute(ll_handle, 'open', ls_filename, ls_null, ls_dir, 3)
   end if
end if


// Define ShellExcecute as Local External Function 
// somewhere in your application or as Global External Function:
Function Long ShellExecute (Long hWnd, String lpOperation, String lpFile, String lpParameters, String lpDirectory, Long nShowCmd) Library "shell32.dll" Alias For "ShellExecuteA"

それはまさにあなたが探していたものではありませんが、うまくいきます!

HTH

于 2012-10-27T04:20:33.440 に答える
0

この機能が PB12.5 で利用可能になるとあなたが言ったとき、私はそれが可能だとは思わなかったので、私はこれに興味を持ちました。

試行錯誤の結果、新しいデータウィンドウ機能は一部の PowerBuilder 12.5 ターゲットでしか利用できないことがわかりました。つまり、機能は新しく設計された WPF データウィンドウに限定されます。下の画像は、新しい機能がどのように見えるかを示しています。各バッファ セクションを展開してそのバッファ内の行を表示したり、行を展開してその行のすべての列を表示したりできます。

ここに画像の説明を入力

プライマリ バッファーとフィルター バッファー内のデータの表示など、新機能の使用例を示すブログ投稿を作成しました。ブログ記事は、次のリンクから参照できます:新しい PowerBuilder 12.5.NET データウィンドウ バッファ デバッグ機能

于 2012-11-03T01:10:49.380 に答える