4DのSQLは,暗黙的なLEFT JOIN
をサポートしていません。これは仕様です。たとえば,下記のコードはOUTER JOIN
をWHERE
で暗黙的に示唆しているので,「実装されていない機能です」というエラーが返されます。
Begin SQL
SELECT Employees.name, Employees.depID, Departments.depID, Departments.depName
FROM Employees
LEFT OUTER JOIN Departments
ON Employees.DepID = Departments.DepID
WHERE Employees.KeyID = Departments.KeyID
INTO :Lbx2;
End SQL
初期のバージョン(v13)では,このようなSQLを実行してもエラーが返されませんでした。しかし,正しい結果が返されたわけでもありません。
ネットワーク上に複数の4D Serverが同一の名前で公開されており,一方はストラクチャ設定の公開名,他方はユーザー設定の公開名をプロードキャストしている場合,Alt
/option
キーを押しながらクライアントを起動して「サーバーに接続」ダイアログを使用すれば,後者のサーバーに接続することができ,ユーザー設定のlastServer.xml
も更新されますが,次回,Alt
/option
キーを押さずに起動すると,クライアントはlastServer.xml
に記録されているほうのサーバーではなく,本来の公開名でプロードキャストされているほうのサーバーに接続します。これは仕様です。
lastServer.xml
は,ビルドされたクライアントアプリケーションがビルドされたサーバーアプリケーションをブロードキャスト公開名(検索サービス)ではみつけることができなかった場合の復帰手段として用意されています。ネットワーク上に複数の4D Serverが同一の名前で公開されているような環境では,ビルド時にBuildIPAdress
キーを指定して,IPアドレスまたはDNS名でサーバーを指定するようにしてください。
4D ViewドキュメントをView Proに変換した場合,日付型の差を求める計算式が設定されたセルの値が変わってしまうことがあります。たとえば,A1
セルに2019-01-01
,A2
セルに2019-01-06
が代入されている場合,A2-A1
は5
(正)となりますが,A3/2
は2
(誤)となります。これは仕様です。
4Dランゲージで日付の減算を実行すれば,日数が整数で返されますが,4D Viewの計算エンジンは特殊であり,日付の除算や乗算であっても,計算値が整数で返されます。日数を整数ではなく,実数で計算したいのであれば,明示的に0
を加算してください。前述の例でいえば,(A3+0)/2
は2.5
となります。逆に,4D Viewと同じように整数で計算したいのであれば,INT(A3/2)
と記述することができます。
DOM Parse XML source
またはDOM Parse XML variable
でXML文書をインポートし,XML SET OPTION
でXML indentation
オプションをXML no indentation
に設定してからDOM EXPORT TO VAR
またはDOM EXPORT TO FILE
を使用した場合,依存のXMLノードに施されているプリティプリントは除去されません。これは仕様です。インデントは,DOM Create XML Ref
で作成したノードに適用されるオプションです。
###'###'##0.00;-###'###'##0.00;
のようにアポストロフィ記号が含まれるフォーマットが設定された4D ViewドキュメントをView Proに変換した場合,フォーマット文字列のアポストロフィがカンマ記号になります。これは仕様です。桁区切りにアポストロフィ記号を使用するSpreadJSのカルチャー設定を作成するか,View Proに変換してから### ##0.00;[Red]- ### ##0.00
のようなシンタックスで同等の条件フォーマットを設定してください。
外部ODBCデータベースに対し,SQL LOGIN
でログインした場合,Begin SQL
End SQL
ブロックであれば,1回のセッション内で何度でも使用することができますが,SQL EXECUTE
のほうは,2回目のコールでエラー1412
(SQL文がすでに開かれている)が返されます。これは仕様です。
ODBCデータソースに対してSQL EXECUTE
を続けて実行するのであれば,まず SQL CANCEL LOAD
で前のSQLステートメントを閉じる必要があります。
SET PICTURE METADATA
コマンドを使用すれば,JPEGまたはTIFF形式のピクチャにタグ情報を書き込むことができます。
Windows版でTIFF画像のタグ情報をひとつずつ更新した場合,毎回の書き込みで画像の展開と再圧縮が実行されるため,画像のサイズにより,処理にかなりの時間を要します。これはWIC(Windows Imaging Component)の制限であり,仕様です。圧縮の回数を抑えるため,タグ情報は1回のコールで更新することが勧められています。
64ビット版では,リスト形式のサブフォームに表示されたレコードを1回だけクリックした場合,On Clicked
イベントに続いてOn Display Detail
イベントが発生するかもしれません。これは仕様です。
On Display Detail
は,レコードの選択状態が変化したときなど,リストフォームの再描画が必要になったときに発生するイベントであり,そのタイミングは,描画レイヤーをキャッシュする仕組みなど,プラットフォーム側の実装にも影響されるので,32ビット版と64ビット版では,多少の違いがあるかもしれません。
ORDAのentity.clone()
メソッドは,データベースに保存されているエンティティに対して使用されることが想定されています。クライアント/サーバー版であれば,未保存であっても,entity.clone()
でエンティティがクローンできるかもしれませんが,スタンドアロン版で同じことをした場合,プライマリーキーの値がコピーされないので,問題になります。この点は,ドキュメントに説明されています。