これまでに、同僚と私を数日間悩ませてしまったので、PowerBuilder.NETがDatawindowのSQL構文を正しく読んでいない
私たちのプロジェクトをPowerBuilder 12 ClassicからPowerBuilder.NETに変換しても問題はありませんが、PowerBuilder.NETがデータウィンドウからSQL構文を読み取る方法に問題があります。
データウィンドウを開くと、構文がコピーされてSQL Server 2008 R2に貼り付けられ、すべてが取得されました。 SQLは
(フィールドのいくつかは、スペースを節約するために除去されていることに注意)以下SELECT hl7_in.intf_app_parm_id,
hl7_in.sending_app,
hl7_in.msg_typ,
hl7_in.process_ind,
hl7_in.hl7_in_seq_no,
hl7_in.msg_evnt_typ,
hl7_in.wrng_msg_cnt,
pt.pt_middle_name,
hl7_in.resolved_ind,
hl7_in.pt_id,
hl7_in.hl7_msg_cntl_id,
hl7_in.msg_txt,
intf_app_parm.app_parm_desc,
intf_engine.engine_name
FROM {oj hl7_in LEFT OUTER JOIN pt ON hl7_in.pt_id = pt.pt_id}, {oj intf_app_parm LEFT OUTER JOIN intf_engine ON intf_app_parm.intf_engine_id = intf_engine.intf_engine_id}
WHERE (hl7_in.intf_app_parm_id = intf_app_parm.intf_app_parm_id) and
((intf_app_parm.direction_ind = 'I'))
である。しかし、コードが実行時に実行されたとき、私は
SQLSTATE = 42000
Microsoft SQL Native Client
The multi-part identifier "intf_app_parm.intf_engine_id" could not be found
(SQLが動作するにもかかわらず)SQLエラーを取得します
上記のSQLの両方のジョインがうまく動作しているため、エラーの原因を突き止めてみた後、データウィンドウをデバッガでチェックアウトすることにしました。まあそれは我々がやったことだ、と私たちは(下記のSQLを参照してください)理由を考え出し:
SELECT hl7_in.intf_app_parm_id,
hl7_in.sending_app,
hl7_in.msg_typ,
hl7_in.process_ind,
hl7_in.hl7_in_seq_no,
hl7_in.msg_evnt_typ,
hl7_in.wrng_msg_cnt,
pt.pt_middle_name,
hl7_in.resolved_ind,
hl7_in.pt_id,
hl7_in.hl7_msg_cntl_id,
hl7_in.msg_txt,
intf_app_parm.app_parm_desc,
intf_engine.engine_name
FROM hl7_in LEFT OUTER JOIN pt ON hl7_in.pt_id = pt.pt_id
LEFT OUTER JOIN intf_engine ON intf_app_parm.intf_engine_id = intf_engine.intf_engine_id
WHERE (hl7_in.intf_app_parm_id = intf_app_parm.intf_app_parm_id) and
((intf_app_parm.direction_ind = 'I'))
あなたは文のFROMを見てみる場合は、カンマを除去することにより、PowerBuilderはそのステートメントを変更することを決めていることがわかりますpt.pt_idの後に2番目の結合の先頭部分(intf_app_parm)を追加します。元のPB12クラシックコードで問題があったかどうかを確認することにしましたが、この奇妙なことは起こりません(リトリーブ文は正しく読み込まれます)。
データウィンドウ自体はアプリケーション中のどの時点でも変更されず、SQL文も変更されません。 PowerBuilder.NETの経験がある人なら誰でもこれが起こるでしょうか?その場合は、問題を解決するために何をしましたか(これは複数のデータウィンドウで発生しています)。
ありがとうございました!
我々はまた、PowerBuilderの12.1ビルド6639 –
を使用していることはデータウィンドウですグラフィカルな選択を使用して?それが最初のことでなければ、私は試してみるだろう。 –
はい、あります。 データウィンドウをシンタックスデザインに変換しようとしましたが、それがうまく動作するように設定されていても、データウィンドウのほとんどすべてのカラムがありません。 –