| 4D v18Find in field | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v18
 Find in field 
         | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Find in field ( targetField ; value ) -> 戻り値 | ||||||||
| 引数 | 型 | 説明 | ||||||
| targetField | フィールド |   | 検索を実行するフィールド | |||||
| value | フィールド, 変数 |   | 検索する値 | |||||
|   | 検索された値 | |||||||
| 戻り値 | 倍長整数 |   | 検索されたレコード番号 または レコードが検索されなかった場合、-1 | |||||
Find in field コマンドは、targetFieldフィールドの値がvalueに等しい最初のレコードのレコード番号を返します。何もレコードが見つからなければ、は-1を返します。
このコマンドを呼び出した後、valueには見つかった値が返されます。これにより、文字列フィールド上でワイルドカード (“@”) を使って検索し、見つかった値を知る事ができます。
注: この原則により、コンパイルモードではvalue に引数($1、$2、など)を使用する事はできません(不正な挙動を引き起こします)。同様に、value 引数にフィールドを渡したとき、正常にクエリされたときにはその値は上書きされるという点に注意して下さい(特にModified record コマンドはテーブルのカレントレコードに対してはTrueを返します)。
このコマンドは、カレントセレクションまたはカレントレコードを変更しません。
このコマンドは速く、特にレコード入力中に重複データの入力を防ぐのに役立ちます。
以前のバージョンについて: このコマンドは、初期のバージョンでの名称はFind index keyコマンドで、インデックスが付けられたフィールドのみを対象としていました。4D v11 SQLからこの制限はなくなり、そのためにコマンド名が変更されました。
オーディオCD用のデータベースで、レコード入力中に既に登録されている歌手かどうかを確認したいとします。同姓同名も存在するため[Singer]Nameフィールドを重複不可にせず、入力フォームで[Singer]Nameフィールドのオブジェクトメソッドに下記のコードを書くことにします:
 If(FORM Event=On Data Change)
    $RecNum:=Find in field([Singer]Name;[Singer]Name)
    If($RecNum #-1) ` この名前が既に入力済みなら
       CONFIRM("この名前の歌手が既に存在します。レコードを表示しますか?";"Yes";"No")
       If(OK=1)
          GOTO RECORD([Singer];$RecNum)
       End if
    End if
 End ifこの例題は有効な値を持つレコードがあるかを調べます。
 C_LONGINT($id;$1)
 $id:=$1
 If(Find in field([MyTable]MyID;$id)>=0)
    $0:=True
 Else
    $0:=False
 End if備考: 演算子 >= が示しているのは、全てのレコード番号を対象としていることです。本コマンドはレコード番号を返しますが、レコード番号の最小値は0なので、全てのレコード番号が対象となります。
	プロダクト: 4D
	テーマ: クエリ
	番号: 
        653
        
        
        
	
	変更: 4D v11 SQL  
Trouver clef index
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	ランゲージリファレンス ( 4D v18)
	
	
	
	
	
 コメントを追加
コメントを追加