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で追加された新コマンドです。