PowerBuilder プログラムを維持しようとしていますが、コードを書いた前のプログラマーにアクセスできません。データウィンドウを変更したところ、選択した列名にテーブル所有者 (dbo) が含まれていないソース コードが生成されました。ただし、WHERE 句に dbo が含まれています。下記参照。
(古いソース コードでは、selection と where のすべての場所に dbo.FieldAuxs が表示されます。)
retrieve="PBSELECT( VERSION(400) TABLE(NAME=~"FieldAuxs~" )
COLUMN(NAME=~"FieldAuxs.id~")
COLUMN(NAME=~"FieldAuxs.clientid~")
COLUMN(NAME=~"FieldAuxs.status~")
COLUMN(NAME=~"FieldAuxs.historyear~")
WHERE( EXP1 =~"dbo.FieldAuxs.id~" OP =~"=~" EXP2 =~":al_id~" ) ) ARG(NAME = ~"al_id~" TYPE = number) " update="FieldAuxs" updatewhere=1 updatekeyinplace=no arguments=(("al_id", number)) )
これにより、エラーが発生します:列プレフィックス dbo.FieldAuxs が、クエリで使用されるテーブル名またはエイリアス名と一致しません...
私のデータベース プロファイルは、私を (dbo ではなく) 私として PowerBuilder 開発環境にログインさせています。それが私のやりたいことだと信じています。
SQLCA.DBParm を SQLQualifiers=1 に設定する方法について読みましたが、データベース プロファイルのセットアップに DBParms 入力領域がありません。12.5 より前のバージョンでは、DBParm 値をボックスに直接入力できたようです。しかし、12.5 では、DBParm の値を設定するチェックボックスとドロップダウンしかありません。また、SQLQualifiers の値を設定することにつながる選択肢はありません。ドキュメントによると: SQLQualifiers=1 --SQL ステートメントの所有者名で識別子を修飾します。
データウィンドウが、選択ではなく WHERE 句でのみ列名を完全に修飾するソース コードを自動生成するように、何かを正しく設定してはなりません。
アイデアは大歓迎です!