データビューで異なるテーブルのフィールドを比較する方法
以下のSQLと同じ動作をMAGICの機能を使って実現したいです。
SELECT
T.報告書ID,
T.ユーザID,
T.行番,
R.進捗
FROM 伝達経路 AS T
INNER JOIN 報告書情報 AS R
ON T.報告書ID = R.報告書ID
WHERE T.ユーザID = 4415
AND T.行番 = R.進捗
ORDER BY T.報告書ID;
やりたいこと
-
伝達経路をメインのデータソースに設定 -
報告書情報を報告書IDでリレーション -
ユーザID = 4415でフィルタ -
報告書IDの昇順で並べる
分からない点
-
行番 = 進捗というフィルタを、MAGICXPAのデータビュー設定でどう実現すればよいかが分かりません。-
どのプロパティや設定を使えば、異なるテーブルのフィールドを比較してフィルタできますか?
-
データビューの設定方法を教えていただけると助かります!
試したことは下記です
下記がSQLSERVERでSQLを実行したときの結果です。

行番と進捗が同じ数値の行のみ表示されています。
マジックのデータビューで試したときの画像です

数式
1 4415
2 B(報告書ID)
3 E(進捗)
F7実行結果

行番と進捗が同じの行のみ表示したかったのですが、できませんでした。
-
iwasakiさん、
プルダウンメニューの「タスク環境」→「範囲位置付」→「式」で、「範囲式」をズームして、下記の式を記述してみてください。
「行番 = 進捗」
-
Tanda さん
いつもありがとうございます
できました!とても助かりました!
-
私なら以下の理由で位置づけにします。
位置づけ出来る+DBに送信される+PGの見やすさ(範囲式開かないと見えないのが嫌)SQLでINNER JOINを使用しているのであれば、結合リンクかと思います。
取得結果が違うので。以下、ヘルプ抜粋
範囲式は、次の場合に必要になります。
範囲基準が、カラムの[範囲下限]と[範囲上限]だけで定義できないような複雑な場合。
[範囲式]はデータベースには送られません。Magic xpaは、データベースから取り込まれたレコードをフィルタリングします。 -
マグル さん
コメントありがとうございます。
結合リンクと位置付で期待した結果になりました!
確かに、データビューだけで定義できるので分かりやすいです。
アドバイス、とても助かりました!
-
マグルさん、
あ、いいアイデアですね!
ISAMでは使えませんが、元のプログラムが SQL で Inner Join されてますからね。 -
iwasakiさん、Tandaさん、
私はISAMというのを使ったことないので分からないですが、
方法に関わらず出来ればなんでもよいとも思います。私はまだ経験年数も少ないマグルなのであれですが、色々知ってらっしゃる大魔法使いの方々は凄いなと思います。
ルーモス -
マグルさん、
ISAMとは、Pervasiveとか、Btrieveとか、Actian Zenという商品名で呼ばれるものです。
Magicは、初期のころはこれらのISAM DBが主流だった時代がありまして、今でもMagicでこれらのDBを使われて人は多いと思います。
私はなるべくSQLへの移行をお勧めしております。最近のMagicは、SQLでしか利用できない機能も増えてきておりますし。。。
サインインしてコメントを残してください。
コメント
7件のコメント