2

次のような構造のテーブル DEBTOR があります。

債務者

2 つ目のテーブル DEBTOR.INFO は次のように構成されています。

DEBTOR.INFO

DEBTOR.INFOテーブルのレコード ID で作成された選択リストがあります。どうやって

select * from DEBTOR WHERE 53 IN (name of select list)?

これは可能ですか?

このクエリは RetrieVe というよりも SQL に似ていることに気付きましたが、達成しようとしていることを理解しやすくするために、そのように記述しました。

現在、私は書くことでこのクエリを達成しています

SELECT DEBTOR WITH 53 EQ [paste list of DEBTOR.INFO record IDs]

しかし明らかに、これは大きなリストでは扱いにくいものです。

4

4 に答える 4

0

あなたにはそれができないように見えます。i-descriptor を使っても一方向しか動きません。TRANS("DEBTOR.INFO",53,0,"X") は DEBTOR ファイルから機能しますが、他の方法では機能しません。したがって、DEBTOR.INFO からの TRANS("DEBTOR",@ID,53,"X") は何も返しません。

考えられる解決策については、 U2 のサイトのこの記事を参照してください。

于 2014-09-04T03:33:40.267 に答える
0

このようなものは機能しますか (2 つのステップ):

DEBTOR.INFO を選択 パケット リスト DEBTOR を保存中 ....

これにより、DEBTOR.INFO ファイルの PACKET フィールドにデータの選択リストが作成され、アクティブになります。(重複する値がある場合は、SAVING の後にキーワード UNIQUE を追加できます)。

次に、後続の LIST コマンドは、ファイル DEBTOR の @ID フィールドにある値を含むアクティブな選択リストを使用します。

于 2014-09-04T17:17:16.600 に答える
0

まだこれを見ているかどうかはわかりませんが、多くのプログラミングを必要としない単純なオプションがあります。

プログラム、サブルーチン、辞書項目でそれを行いました。

最初に、DEBTOR.INFO ID のリストを含む名前付き共通変数を設定します。

SETLIST
*
* Use named common to hold list of keys
COMMON /MYKEYS/ KEYLIST
*
* Note for this example I am reading the list from SAVEDLISTS
OPEN "SAVEDLISTS" TO FILE ELSE STOP "CAN NOT OPEN SAVEDLISTS"
READ KEYLIST FROM FILE, "MIKE000" ELSE STOP "NO MIKE000 ITEM"

これで、そのリストの値をチェックするサブルーチンを作成できます

CHECKLIST
SUBROUTINE CHECKLIST( RVAL, IVAL)
COMMON /MYKEYS/ KEYLIST
LOCATE IVAL IN KEYLIST <1> SETTING POS THEN
  RVAL = 1
END ELSE RVAL = 0
RETURN

最後に、辞書項目を使用して、探しているフィールドでサブルーチンを呼び出します。

INLIST:
I
SUBR("CHECKLIST", FK)

IN LIST
10R
S

あとは、リスト ステートメントに正しい基準を設定するだけです。

LIST DEBTOR WITH INLIST = 1 ACCOUNT STATUS FK
于 2014-09-10T18:47:55.483 に答える