4D v14.3レコードを編集する |
||
|
4D v14.3
レコードを編集する
レコードを編集する
ここではデータベースを取り扱う際に実行する以下の主要な操作について説明します:
デザインモードでデータベースを作成したら、レコードの追加や更新、削除を開始することができます。これらの処理は通常アプリケーションモードのカスタムインターフェースで行います。 4Dではデザインモードでもレコードの追加、更新、削除を行うことができます。これにより基本的なタスクやアプリケーションデータのテストを行うことができます。 データベースにレコードを追加した後で、ほとんどの場合はデータの修正が必要になります。1件以上のレコードを修正する必要がある場合、レコードセレクションメソッドを使用してレコードを表示します (レコードの検索参照)。そして出力あるいは入力フォームを使用してレコードを更新できます。 また、テーブル内の一連のレコードに対して、まったく同じ変更が必要となる場合があります。これは“グローバル更新”と呼ばれます。4D では、各レコードを個別に変更しなくても、テーブルのカレントセレクションを自動的に更新することができます。 さらに、1 件以上のレコードの削除が必要となることもあるでしょう。あるレコードが無効であるか、不適切であることを発見した場合は、レコードを削除することができます。レコードは必要でも、レコードに格納された値が正確ではなくなった場合は、削除でなく修正を行います。入力フォームからカレントレコードを削除したり、または出力フォームを用いてカレントセレクション内の一部のレコードを削除することができます。 入力フォームまたは出力フォームを使用して、レコードを追加することができます。 アプリケーションモードでは"サブレコード追加"標準アクション (リストにレコード追加) またはADD RECORDやCREATE RECORDコマンドを使用して、レコードを追加できます。 デザインモードでは、4Dが提供するレコード追加機能を使用して、入出力フォームでレコードを追加できます。
出力フォーム上で直接レコードを追加することもできます。この場合変数や他のテーブルのフィールド、サブフォームには入力できない点に留意してください。
情報を更新する必要がある場合、または元の情報が正しくないことが判明した場合、レコードを修正する必要があります。レコードグループを更新するにはまず更新対象のレコードをカレントセレクションにしなければなりません。そのためにレコードを検索するか、出力フォーム上で対象レコードをハイライトし、サブセットとして選択します。 入力および出力フォームを使用してレコードを更新できます。出力フォームでは複数のレコードを一度に見ることができるので、一連のレコードを更新するような場合には便利です。しかし通常出力フォームはすべてのフィールドを含んでいません。また入力フォームに細かく指定されているような入力制御がないかもしれません。 アプリケーションモードでは"サブレコード編集"標準アクション (リストフォーム中でレコードを更新) またはMODIFY RECORDコマンドでレコードを編集できます。 デザインモードでは4Dが提供する複数の機能を使用してレコードを更新できます:
出力フォームに表示されているデータを直接編集することも可能です。この場合変数、他のテーブルのフィールド、サブフォームにはデータ入力できない点に留意してください。
一連のレコードに対して一定の変更を行いたい場合は、グローバル更新を行うことができます。グローバル更新を行い、面倒で時間がかかるレコードグループへの変更を自動化できます。例えば次のような処理を行いたい場合グローバル更新を実行します:
グローバル更新は、レコードのカレントセレクションに対してフォーミュラを“適用”することによって行われます。つまりカレントセレクションの各レコードをフォーミュラを用いて変更します。 いくつかのフォーミュラの例題とそのフォーミュラが実行する機能の説明を次に示します:
グローバル更新を実行する際にユーザー作成の関数を組み込める機能は、4D の強力な特長の1 つです。フォーミュラには4Dランゲージ関数や (開発者が使用可能に指定した) プロジェクトメソッドを指定できます。セキュリティのため、フォーミュラからのプロジェクトメソッドへのアクセスは制限されています (セキュリティページ参照)。 一行を超えるフォーミュラを書くことはできません。つまり改行を挿入して二行目を書くことはできません。しかしフォーミュラエディターで利用可能に指定されたプロジェクトメソッドを使用すれば、このメソッドに複雑な処理を記述することができます。 グローバル更新を実行するには、を使用して、カレントセレクションの各レコードに適用されるフォーミュラを記述します。これを行うにはレコードメニューのフォーミュラで更新...を選択します。事前にディスク上のファイルとして保存したフォーミュラ (拡張子.4fr) をロードすることもできます。詳細はを参照してください。 アプリケーションモードではEXECUTE FORMULAコマンドを使用して直接更新フォーミュラを実行したり、EDIT FORMULAコマンドでフォーミュラエディターを表示できます。 あるレコードが無効になったり、不要となった場合、それを削除することができます。レコードは必要でも、レコードに格納された値が正確ではなくなった場合は、削除ではなく修正を実行します。 次の2 つの方法を使用し、レコードを削除することができます:
アプリケーションモードでは"レコード削除"や"サブレコード削除"標準コマンド、あるいはDELETE RECORDやDELETE SELECTIONコマンドを使用してレコードを削除できます。 デザインモードでは編集メニューのクリアコマンドやDeleteキーでもレコードを削除できます。 警告: レコードの削除は恒久的であり、一度削除したレコードはバックアップからしか取り戻せません。レコードを削除するとき、4Dは本当に削除を実行してよいか確認するダイアログを表示します。 入力フォームからレコードを削除すると、削除を行う前に各レコードの内容を検証することができます。
出力フォームを使用して複数のレコードを一回の処理で削除できます。削除するレコードは出力フォーム上でハイライトされていなければなりません。
ロックされたレコードは削除できません。レコードが別のプロセスで使用されると、そのレコードはロックされます。例えばあるプロセスで修正のためにレコードを開くと、4D は別のプロセスで修正されないように、そのレコードをロックします。 4D Serverに関する注記: レコードが別のユーザーにより使用されている場合もレコードがロックされます。 レコードを削除する前に、削除しようとするレコードのセレクションを作成します。セレクションにロックされたレコードが含まれている場合、その削除処理は実行されますが、ロックされたレコードは削除されず、削除後もカレントセレクション内に残されます。これらのレコードを削除するには、レコードのロックが解除される (つまり、そのレコードが使用されなくなる) まで待たなければなりません。レコードロックテーマのコマンドを使用してこのタイプのシナリオを管理できます。 別プロセスでレコードが削除されることにより、カレントセレクションが変更される場合があります。例えばデータベースの作業中に別プロセスを開始して、テーブルからあるレコードを削除したものとします。するとそのプロセスで削除されたレコードはテーブルから永久削除されます。しかし新しいレコードのセレクションが作成されるまで、現在データベースの処理中に表示しているそのレコードに対し、テーブルへのこれらの変更が反映されない可能性があります。 この点について説明するため、あるテーブルに50 件のレコードがあり、全レコードがカレントセレクションに含まれている場合について考えてみましょう。この時点では、出力フォームのタイトルバーに“50/50 (50 件中の50 件) ”のレコードが選択されていると表示されます。別プロセスでこの中の1 レコードが削除されると、タイトルバーは“50/49 (49 件中の50 件) ”のレコードが選択されているという表示に変わります。これではテーブル内のレコード数よりも多いレコードがカレントセレクションに存在していることになります。カレントセレクションを変更すると、タイトルバーが更新されます。 削除されたレコードを修正または削除しようとすると、ダイアログボックスが表示され、そのレコードが削除されたことを知らせます。 4D Serverに関する注記: 別のユーザーにより削除されたレコードも、カレントセレクションに対して同様の影響を与えます。レコードはテーブルから削除されますが、カレントセレクションからは取り除かれません。したがって、カレントセレクションには実際にテーブルに存在する数よりも多いレコードが含まれているようにみえる場合があります。 |
プロパティ
プロダクト: 4D ARTICLE USAGE
デザインリファレンス ( 4D v14 R2) Parent of : レコードを編集する ( 4D v12.4) |