過去の桐井戸端BBS (桐ver.8)
11038 #表引き関数は一括処理で使用できないのですか。 桑原 2001/04/25-21:25
以下の一括処理で、
「KU1033:使用できない関数です 」というエラーメッセージが
#表引き関数のところででてきて使えません。

−−−−−−−−−−−−−−−−−−−−−−−−
変数宣言 文字列 {&A,&B}
  &A=#ユーザ名
  &B=#表引き(&A,=,”予備.tbl”,[ユーザ名],[教科更新pw])
  利用者コード &B

−−−−−−−−−−−−−−−−−−−−−−−−

やりたいことは、#ユーザ名でユーザーの名前を取り込んで、
そのユーザーに応じて、「予備.tbl」というファイルから、
利用者コードを桐に設定したいということです。



(1)#表引き関数は表定義場面では、きちんと使えるのですが、一括処理では使えないのでしょうか。

(2)それとも私が、何か設定ミスをしているのでしょうか。

(3)もし、一括処理で#表引き関数が使えないのなら、上のように、ユーザー名から表引きで、利用者コードを設定するうまい方法はないでしょうか。

よろしくお願いします。

11039 Re:#表引き関数の一括処理での使用。 幅田 2001/04/25-21:53
記事番号11038へのコメント
桑原さん、こんにちは。

>以下の一括処理で、
>「KU1033:使用できない関数です 」というエラーメッセージが
>#表引き関数のところででてきて使えません。

#表引き関数は一括処理内では使えません。
置換コマンドを使ってもだめです。
主に項目計算式などで使います。
他に使える場所は、桐v5のマニュアルには書いてありますが、
v8のマニュアルには書いてありません。
ここんとこもちょっと不親切ですね。

>−−−−−−−−−−−−−−−−−−−−−−−−
>変数宣言 文字列 {&A,&B}
>  &A=#ユーザ名
>  &B=#表引き(&A,=,”予備.tbl”,[ユーザ名],[教科更新pw])
>  利用者コード &B
>
>−−−−−−−−−−−−−−−−−−−−−−−−

そこで、上記みたいな一括処理を#表引き関数を使ってやろうとした場合、ですけど..

まず、”ユーザ.TBL”などというファイル名で、項目もひとつだけの表を作ります。
項目名は[教科更新pw]としておいて、その項目計算式に

#表引き(#ユーザ名,=,”予備.tbl”,[ユーザ名],[教科更新pw])

を設定しておき、表編集の行挿入でレコードをひとつだけ、作っておきます。


あとは、一括処理で
−−−−−−−−−−
変数宣言 文字列 {&B}
 表 "ユーザ"
  置換 [教科更新pw]
  &B=[教科更新pw]
 表
  利用者コード &B
−−−−−−−−−−
とすれば、お望みの結果が得られると思います。

11040 Re:#表引き関数の一括処理での使用。 幅田 2001/04/25-22:00
記事番号11039へのコメント
>−−−−−−−−−−
>変数宣言 文字列 {&B}
> 表 "ユーザ"
>  置換 [教科更新pw]
>  &B=[教科更新pw]
> 表
>  利用者コード &B
>−−−−−−−−−−

こんなことしなくても

−−−−−−−
変数宣言 文字列 {&B}
 表 "予備"
  検索 [ユーザ名] {=#ユーザ名}
  &B=[教科更新pw]
 表
  利用者コード &B
−−−−−−−
とすれば、よけいな表も作らなくてもいいですね。
無理に表引き関数を使う必要はありません。

11045 Re:#表引き関数の一括処理での使用。 桑原 2001/04/26-04:55
記事番号11040へのコメント
幅田さん
さっそくのコメントありがとうございます。

やはり一括処理では、表引き関数は使えなかったのですね。


>−−−−−−−
>変数宣言 文字列 {&B}
> 表 "予備"
>  検索 [ユーザ名] {=#ユーザ名}
>  &B=[教科更新pw]
> 表
>  利用者コード &B
>−−−−−−−
>とすれば、よけいな表も作らなくてもいいですね。
>無理に表引き関数を使う必要はありません。

また、具体的な対応方法も教えていただきありがとうございました。
とても私の力では、こんなエレガントな解決方法は、思いつきませんでした。

まずは、お礼まで

今後ともよろしくお願いします。

11059 表引き関数は代入コマンドで使えません 佐田 守弘 2001/04/26-23:21
記事番号11045へのコメント
桑原さん
>やはり一括処理では、表引き関数は使えなかったのですね。
大ざっぱには、まあ、そんな感じですが、正しく言うと一括処理で使えないのではなくて、
変数に対する代入コマンドの計算式の中で使えません。
一括処理の中でも置換コマンドの様に、表の項目値に値を書き込む場合には使えます。

変数に対して表引き値を代入する場合には、幅田さんが書かれている様に、表引きで代入するのではなく、
検索コマンドで目的レコードを検索し、そのレコードの項目値を計算式として代入する方法を使って下さい。

佐田守弘(KS-00119)

11063 Re:表引き関数は置換コマンドでは使えるようです 幅田 2001/04/27-06:46
記事番号11059へのコメント
>一括処理の中でも置換コマンドの様に、表の項目値に値を書き込む場合には使え
>ます。

私は誤解しておりました。置換コマンドでも使えないのかと思っておりました。

とすれば、No.11039の記事にある方法で、
ユーザ.TBLの項目計算式に表引きの設定をしないで
−−−−−−−
変数宣言 文字列 {&B}
 表 "ユーザ"
  置換 [教科更新pw]=#表引き(#ユーザ名,=,”予備.tbl”,[ユーザ名],[教科更新pw])
  &B=[教科更新pw]
 表
  利用者コード &B
−−−−−−−

という風に書けば、一括処理内でも使えることになるのですね。


>変数に対して表引き値を代入する場合には、幅田さんが書かれている様に、表引
>きで代入するのではなく、検索コマンドで目的レコードを検索し、そのレコード
>の項目値を計算式として代入する方法を使って下さい。

まあ、今回のケースでは、佐田さんも言っておられますが、No.11040のように検索コマンドを使ったほうがいいようですね。

戻る