2012-03-06 33 views
0

iはとき取得した結果を持つデータストアを有するパッシング、行は(他のウィンドウはPowerBuilderがデータストア/オブジェクト

ds_1.Retrieve()

ds_1.RowCount IFに表示されるべきです)> 0 THEN

i_str_pass.po[1] = ds_1 

OpenWithParm(w_error, i_str_pass) 

END IF

i_str_passは構造であり、POは私が

w_errorで呼び出してみました、私は再び

を、それを取得する必要なしw_errorのデータウィンドウでは、DS_1の結果を表示したいPowerObject型

です

str_pass i_str_pass

i_str_pass = Message.PowerObjectparm

はdw_1 = i_str_pass.po [1]私はデバッグと私が正しく それを通過したことを見たが、取得されたデータが間違っているすべての 何イムで表示されませんでした

?ありがとうございました。

+0

(またはしない場合がありますが、心配なものであるかもしれない)あまりにもすべての罰金ですが、そのデータのコピーを作っているので、メモリペナルティを被る応答ウィンドウw_errorではありません? ds_1はローカル変数ですか?その場合、w_errorのコードが現在破棄されたデータストアオブジェクトにアクセスできるようになる前に、参照が範囲外になります。機能要件に応じて、これを処理する方法がいくつかあります。 –

+0

w_errorはレスポンスウィンドウにすることができます。私はデータウィンドウでポップアップウィンドウとして表示しました。 – Sid

+0

これは1年前のことです...私は別のプロジェクトで同じ問題をGoogleから検索しました。私は正確に1年前の同じ日付に自分の質問に答えました。 haha – Sid

答えて

3

使用

i_str_pass.po[1]. DYNAMIC ShareData(dw_1) 

代わりの

dw_1 = i_str_pass.po[1] 

データウィンドウにデータストアを割り当てているので、後者は実行時エラーではありませんでした驚きました。

のGetFullState/RowsCopy

1

あなたがGetFullState()/SetFullState()を見て取ることができる:

blobl lbl_data 
if i_str_pass.po[1].GetFullState(lbl_data) = 1 then 
    dw_1.SetFullState(lbl_data) 
end if 

また2つのデータストアまたはデータウィンドウ間の「リンク」を確立するためにShareData()を見てかかることがあります。

+0

私はそれを渡した後にRowsCopyを使いました。私は行を表示するこの方法です。私は最初の場所に行を表示していない理由はわかりませんが、dw_1.Rowcount()を呼び出すと..そこに.. RowsCopyが解決しました。 – Sid

+0

@Sid:なぜ最初の場所に行が表示されないのかわからない_:データウィンドウにデータストアを直接割り当てることができないからです。部分的に1つはビジュアルオブジェクトであり、もう1つはビジュアルオブジェクトではないためです。あなたがしたのは、dw_1変数ポイントをウィンドウが表示できないデータストアにしたことです。しかし、 'RowCount'は両方のタイプで動作するので、何らかの方法で動作するという錯覚を得ます。 – Seki

+0

oh。 dwを別のウィンドウのdwに渡すとうまくいきますか? – Sid