過去の桐井戸端BBS (桐ver.9)
31077 表引きを設定しているている項目で表引きされなかった時に直接入力をしたい まい 2006/02/09-12:33
新しくトピ立てさせて頂きました。

教えてください。
Aテーブルの内容をBテーブルへ表引きさせている時
Aテーブルに無かった内容(ブランク)については
直接手入力をしたいのですが
可能でしょうか?

御教授宜しくお願い致します。

31078 Re:表引きと直接入力 アックン 2006/02/09-12:51
記事番号31077へのコメント
まいさん
表引き関数を項目計算式に記述していると思いますが、
編集初期値式なり挿入初期値式に記述すると、
データ入力・削除が可能になります。

アックン(=^・^=)
31080 Re:表引きと直接入力 宮城 2006/02/09-13:31
記事番号31078へのコメント
ちょっとだけ補足。

やってみればすぐわかりますが(そのほうが違いがわかっていい?)、
表引きの場合、編集初期値式でないと機能しません。

編集状態でその項目にカーソルがくるまで表引きしませんが。

31082 Re:表引きと直接入力 まい 2006/02/09-15:41
記事番号31080へのコメント
アックンさん、宮城さん
有難う御座いました。

とても助かりました!!

表引きについてさらにお尋ねしたいのですが
以下の式ですが・・

【テーブル名】サブ.tbl

#cond(#tlu([管理団体コード],=,"マスター.tbl",[管理団体コード],[サービスタイプ])=1,#tlu([管理団体コード],=,"w-master.tbl",[管理団体コード],[選曲番号]))

マスター.tblの[サービスタイプ]が1の[作品番号]を
サブ.tbl表引きしてきなさい!というものなのですが

サブ.tblの[管理団体コード]がブランクの時は表引きしないで欲しいのです。
というのは、
マスター.tblの[管理団体コード]にもブランクがあって
そのせいで
サブ.tblの[管理団体コード]のブランク箇所は
みんな同じ数字が入ってしまうのです。

ブランクの場合は自分で手入力したいので。。

この場合、どうしたらよいのでしょうか?
31083 Re:表引きと直接入力 アックン 2006/02/09-15:48
記事番号31080へのコメント
宮城さん、そうですね。
挿入初期値式に表引き関数を書いても意味ないですね。表引きしないから。(^^;

アックン(=^・^=)
31084 Re:表引きと直接入力 アックン 2006/02/09-15:48
記事番号31077へのコメント
まいさん
項目計算式も編集初期値式もやめて、フォームで項目置換する方法を検討してみては。

その表を編集対象表にしたフォームを作り、コマンドボタンを1個作って、
そのボタンを右クリック→「オブジェクトの属性」の「コマンドボタン」(タブ)
 機能名:項目置換
 機能パラメータリスト:[住所1]=#tlu([郵便番号],=,郵便番号,[郵便番号],
[住所]),[住所2]=""
のように、複数項目を一度に置換できます。

この方法だと、いちいちボタンをクリックしないといけないから、使い勝手良くないぞというときは、次の手。

フォームやめて、表だけ使います。
「履歴」で置換してしまう方法があります。
これもいちいち履歴を操作しないといけないですね。

では次の手。
空白セルに手入力しようとしないで、いっそのこと「表引き表」の方を編集してしまえばどうですか。
上の表引き関数の例で言えば、"郵便番号.tbl"の方を編集するわけです。

さらに次の手。
「表引先表」(たとえば住所録に該当する表)を最初に使わないで
作業表に新しいデータを入れて、項目計算式で表引きします。
その後、本来の表(住所録)に読み込むなり書き出してから、空白セルを手入力します。

ともかく、項目計算式が設定されている項目には、入力できないことは確かです。
アックン(=^・^=)

31085 Re:表引きと直接入力 宮城 2006/02/09-16:01
記事番号31082へのコメント
これって、マスター.tblに[管理団体コード]がブランクで
[サービスタイプ]が「1」のレコードがあるということですか?

であれば、そういうレコードの[サービスタイプ]を「1」以外
に変えちゃえばいいのでは?

31086 Re:表引きと直接入力 アックン 2006/02/09-16:17
記事番号31082へのコメント
まいさん
たちまち"サブ.tbl"だけでいいので、設定変更します。
桐メニュー「ファイル」→「ファイル属性」→「未定義項目値処理」
この設定箇所がおそらく「未定義」にチェックが入っていると思うので、
「ゼロ」にチェックマークを入れると、うまくいくと思いますよ。

空白セルが未定義値扱いだと、
表引き関数の参照項目が未定義値になりますから、
表引き表から未定義値を検索します。

通常この設定箇所「未定義項目値処理」は、支障がない限り「ゼロ」にしておきます。

アックン(=^・^=)
31087 Re:表引きと直接入力 宮城 2006/02/09-16:50
記事番号31084へのコメント
KEVなんか持ち出すのはどうかなあとも思いつつ、表引きしたいよ、手入力も
したいよということなら。汎用性はまああるだろうということで・・・。

本体から表引き記述消します。
表引き専用表を作ります(こちらに表引き記述します。また、常にレコード1件となるように注意します。)。
本体でKey(たとえば[ID])入力が終わったら、[ID]を変数にとって、表引き専用表開いて行訂正、各項目値を変数にとります。
表引き専用表閉じて、本体に戻って行訂正。

こんな KEVになります。私の手持ちの流用ですので項目名、変数名にはこだわないでください。(変数宣言は要りますよ。)

手続き定義開始 tID::ソース値更新()
 &ID=[ID]
 *■[氏名]がヌルなら表引きを行う。
 ケース開始
  ケース([氏名]="")
   表 "表引き専用表.tbl"
   行訂正 [ID]=&ID
   代入 &氏名=[氏名]¥
     ,&カナ=[カナ]¥
     ,&性別=[性別]¥
     ,&生年月日=[生年月日]¥
     ,&郵便番号=[郵便番号]¥
     ,&住所=[住所]¥
     ,&電話番号=[電話番号]
   終了 表 編集対象表
   編集表 "本体.tbl"
   メソッド呼び出し @フォーム.更新モード設定(0)
   ケース開始
    *■引けている場合、表引きデータを使う。
    ケース(&氏名<>"")
     行訂正 [氏名]=&氏名¥
        ,[カナ]=&カナ¥
        ,[性別]=&性別¥
        ,[生年月日]=&生年月日¥
        ,[郵便番号]=&郵便番号¥
        ,[住所]=&住所¥
        ,[電話番号]=&電話番号
   メソッド呼び出し @フォーム.更新モード設定(2)
 ケース終了
手続き定義終了

実際にはなんたらかんたらチェックが必要になってきますが。
31088 Re:表引きと直接入力 宮城 2006/02/09-16:54
記事番号31087へのコメント
「ケース終了」、流用時消しすぎでした。m(__)m

手続き定義開始 tID::ソース値更新()
 &ID=[ID]
 *■[氏名]がヌルなら表引きを行う。
 ケース開始
  ケース([氏名]="")
   表 "表引き専用表.tbl"
   行訂正 [ID]=&ID
   代入 &氏名=[氏名]¥
     ,&カナ=[カナ]¥
     ,&性別=[性別]¥
     ,&生年月日=[生年月日]¥
     ,&郵便番号=[郵便番号]¥
     ,&住所=[住所]¥
     ,&電話番号=[電話番号]
   終了 表 編集対象表
   編集表 "本体.tbl"
   メソッド呼び出し @フォーム.更新モード設定(0)
   ケース開始
    *■引けている場合、表引きデータを使う。
    ケース(&氏名<>"")
     行訂正 [氏名]=&氏名¥
        ,[カナ]=&カナ¥
        ,[性別]=&性別¥
        ,[生年月日]=&生年月日¥
        ,[郵便番号]=&郵便番号¥
        ,[住所]=&住所¥
        ,[電話番号]=&電話番号
   メソッド呼び出し @フォーム.更新モード設定(2)
   ケース終了
 ケース終了
手続き定義終了
31089 Re:表引きと直接入力 宮城 2006/02/09-16:56
記事番号31088へのコメント
位置も間違い。(;_;) m(__)m

手続き定義開始 tID::ソース値更新()
 &ID=[ID]
 *■[氏名]がヌルなら表引きを行う。
 ケース開始
  ケース([氏名]="")
   表 "表引き専用表.tbl"
   行訂正 [ID]=&ID
   代入 &氏名=[氏名]¥
     ,&カナ=[カナ]¥
     ,&性別=[性別]¥
     ,&生年月日=[生年月日]¥
     ,&郵便番号=[郵便番号]¥
     ,&住所=[住所]¥
     ,&電話番号=[電話番号]
   終了 表 編集対象表
   編集表 "本体.tbl"
   メソッド呼び出し @フォーム.更新モード設定(0)
   ケース開始
    *■引けている場合、表引きデータを使う。
    ケース(&氏名<>"")
     行訂正 [氏名]=&氏名¥
        ,[カナ]=&カナ¥
        ,[性別]=&性別¥
        ,[生年月日]=&生年月日¥
        ,[郵便番号]=&郵便番号¥
        ,[住所]=&住所¥
        ,[電話番号]=&電話番号
   ケース終了
   メソッド呼び出し @フォーム.更新モード設定(2)
 ケース終了
手続き定義終了
31091 Re:表引きと直接入力 まい 2006/02/09-18:20
記事番号31089へのコメント
アックンさん、宮崎さん
ご親切にお答え頂き有難う御座います。

表引きと直接入力両方出来るようにする所は
編集初期値式でばっちり解決出来。とても使いやすくなりました。

桐の機能を殆ど知らなかった私には
皆さんの御提示に
感嘆するばかりですが・・


教えて頂いた内容が理解の範囲を超えつつあるような・・
なんだかスミマセン(泣)


今まで表のみでデータベースをいじっていたので
やはり、表での操作でやるのが一番安心なのですが

面倒なようでも表引きのところで
何とかものにならないかと・・・


どうしても、[管理団体コード]にはあるものと無いものが存在してしまうので・・・

2つ以上の条件のある表引きで
ヌルの場合は表引き出来ないようにする方法があればそれで良いのですが。

例えば、
サブ.tblの[管理団体コード]がヌルの場合は
[他の項目]に一旦返す。ヌル=0 数値が入っていれば=1

条件は、
[他の項目]=1 で
マスター.tblの[サービスタイプ])=1 であること

以下の式では、メイン.tblとサブ.tblのヌル同士で表引きがされてしまうの
でぶ〜〜です・・。

【テーブル名】サブ.tbl
#cond(#tlu([管理団体コード],=,"マスター.tbl",[管理団体コード],[サービ
スタイプ])=1,#tlu([管理団体コード],=,"w-master.tbl",[管理団体コード],
[選曲番号]))

色々出来始めると
ついつい欲が出ますが・・
諦めて併合するしか無いのかしら(泣)

本当に初心者ですみません
31092 Re:表引きと直接入力 アックン 2006/02/09-20:08
記事番号31091へのコメント
まいさん
No.31084に書いた内容は関係ないですか?
それとも、ゼロでなく未定義値に設定しないといけないような特別の事情がある表ですか。
という前提であれば、こうすればいいですよ。

#cond([管理団体コード], 現在の式 )

#cond( [管理団体コード], 
#cond(#tlu([管理団体コード],=,"マスター.tbl",[管理団体コード],[サービスタイプ])=1,#tlu([管理団体コード],=,"w-master.tbl",[管理団体コード],[選曲番号]))
)

編集初期値式でほんとに大丈夫ですか・・・・(^^;
アックン(=^・^=)

31094 Re:表引きと直接入力 まい 2006/02/09-20:58
記事番号31091へのコメント
>アックンさん、宮崎さん

お二方の指導のおかげで
何度も何度もエラーされても
負けずに色々試してたら出来ました〜〜(泣)


>サブ.tblの[管理団体コード]がヌルの場合は
>[他の項目]に一旦返す。ヌル=0 数値が入っていれば=1

#cond([管理団体コード],1,1,0)


>条件は、
>[他の項目]=1 で
>マスター.tblの[サービスタイプ])=1 であること

#cond([他の項目]=1 ,#cond(#tlu([管理団体コード],=,"マスター.tbl",[管理団体コード],[サービスタイプ])=1,#tlu( [管理団体コード] , = , "マスター.tbl" , [管理団体コード] , [選曲番号] ) ) )


本当にご親切にして頂いて有難う御座います。
また、どこかで壁にぶつかったら相談させてください。
31206 Re:こうじゃだめ??? V30 2006/02/23-02:56
記事番号31082へのコメント

こうじゃ駄目なの?

#COND([管理団体コード]≠#U,#cond(#tlu([管理団体コード],=,"マスター.tbl",[管理団体コード],[サービスタイプ])=1,#tlu([管理団体コード],=,"w-master.tbl",[管理団体コード],[選曲番号])))

[管理団体コード]が未定義でないときは、次の表引きをしなさい。
どう???

ところで、復活していたのね。
また、ちょくちょく来てみますね(^^ゞ

戻る