AppleのAPIは,カスタム用紙を除く用紙リストを返します。
This function obtains a list of the papers that a given printer claims to support. The paper list does not include any custom paper sizes that may be available.
そのため,PRINT OPTION VALUESにはカスタム用紙サイズが含まれていません。これは仕様です。
バイナリデータベースをプロジェクトに変換した場合,ボタンやテキスト入力の高さが不意に変わってしまうことがあるかもしれません。指定されたフォントのサイズに対してオブジェクトの高さが不足している場合に現象が発生します。ボタンタイトルやテキスト入力の文字列が空であっても,フォームエディターで設定した高さがテキストレンダリングの最低基準に達していない場合,オブジェクトの高さはフォーム実行時に自動調整されます。
Windows 11プラットフォームでは,テキスト入力中にマウスポインターの形状がアイビーム(テキスト選択用)に変化しません。これはオペレーションシステムに由来する仕様です。
On Web ConnectionやOn Web Authenticationなど,HTTPリクエストで実行されたデータベースメソッドのシンタックスエラーは表示されません。これは仕様です。ON ERR CALLでエラーハンドリングメソッドがインストールされていないWebプロセスでランタイムエラーが発生した場合,メソッドは中断され,レスポンスとしてエラーHTMLページがユーザーエージェントに返されます。
旧式ネットワークレイヤーでクライアント/サーバー通信を暗号化した場合,アプリケーションの公開名には^というプリフィックスが追加されます。新ネットワークレイヤーの公開名は暗号化の設定に左右されません。
クイックレポートの出力パスを変更せずにレコードやフィールド区切り文字だけを変更した場合,つまりQR SET DOCUMENT PROPERTYでqr field separatorをセットした場合,新しい区切り文字はレポート設定に反映されません。これは仕様です。クイックレポートエディターは内部的にQR BLOB TO REPORTをコールしていますが,コマンドで区切り文字だけを更新することができないためです。区切り文字を変更するためには,まず,出力パスを変更し,それから新しい設定を保存する必要があります。
Mac版のOracle Instant Client ODBCとunixODBCで登録したOracleのDSNには,4DのODBCで接続することができません。これは仕様です。4Dおよび4D ServerはunixODBCではなく,iODBCを使用していますが,Oracle ODBC DriverはiODBCのサポートを中止したようです。
collection.distinct()およびentitySelection.distinct()は,オブジェクトの集合に対して使用できるDISTINCT VALUESのようなものです。
値を集積したい属性またはプロパティのパスはドット記法で記述します。このパスが間違っていると,正しい値が返されません。
たとえば,objというオブジェクト型フィールドのpropというプロパティからdistinct()を取り出したい場合を考えましょう。
$values:=ds.Table_1.all().distinct("obj") //#1
$values:=ds.Table_1.all().distinct("obj.prop") //#2
#1のobjというパスはオブジェクト型のフィールド自体を指します。
#2のobj.propという属性パスは,リレーション属性objでリンクされたデータクラスのpropプロパティ,あるいはオブジェクト型のストレージ属性obj内部のpropプロパティを指します。しかし,ドキュメントに明記されているように,リレートされた属性をdistinct()で参照することはできません。obj.propはストレージ属性なので,一見,シンタックスには問題がないように思われます。実際,obj.propがスカラー値であれば,正しいコレクションが返されます。また,obj.prop.valueのようにオブジェクト内部のスカラー値プロパティまでパスを延長すれば,やはり正しいコレクションが返されます。しかし,obj.propがオブジェクト型の場合,distinct()は空のコレクションを返します。
entitySelection.distinct()がサポートしていない属性パス,つまり
は,プロジェクションとcollection.distinct()で取り出すことができます。
$values:=ds.Table_1.all().obj.distinct("prop")
objがdistinct()のパス名ではなく,ORDAのパス名に含まれているのがポイントです。
ORDAでは,クラシック言語の自動リレーションの代わりにプロジェクションを使用し,リレーション先を参照するクエリを実行したり,逆にクエリからリレーション先のデータを参照したりすることができます。
エンティティセレクションをオブジェクト記法で発展させた場合,パスがリレーション名であればプロジェクションはエンティティセレクションを返しますが,パスがフィールド名であればコレクションを返します。つまり,ORDAのオブジェクト記法にはRELATE MANY SELECTIONやRELATE ONE SELECTIONだけでなくSELECTION TO ARRAYのような働きもあるということです。
複数の属性からコレクションを作成したい場合はentitySelection.toCollection()やentitySelection.extract()を使用することができます。
entitySelection.extract()はcollection.extract()に似ていますが,v19で追加された新コマンドです。