4D v16.3

レコードを編集する

ホーム

 
4D v16.3
レコードを編集する

レコードを編集する  


 

 

ここではデータベースを取り扱う際に実行する以下の主要な操作について説明します:

  • レコードの追加
  • レコードの更新
  • レコードの削除

デザインモードでデータベースを作成したら、レコードの追加や更新、削除を開始することができます。これらの処理は通常アプリケーションモードのカスタムインターフェースで行います。

4Dではデザインモードでもレコードの追加、更新、削除を行うことができます。これにより基本的なタスクやアプリケーションデータのテストを行うことができます。

データベースにレコードを追加した後で、ほとんどの場合はデータの修正が必要になります。1件以上のレコードを修正する必要がある場合、レコードセレクションメソッドを使用してレコードを表示します (レコードの検索参照)。そして出力あるいは入力フォームを使用してレコードを更新できます。

また、テーブル内の一連のレコードに対して、まったく同じ変更が必要となる場合があります。これは“グローバル更新”と呼ばれます。4D では、各レコードを個別に変更しなくても、テーブルのカレントセレクションを自動的に更新することができます。

さらに、1 件以上のレコードの削除が必要となることもあるでしょう。あるレコードが無効であるか、不適切であることを発見した場合は、レコードを削除することができます。レコードは必要でも、レコードに格納された値が正確ではなくなった場合は、削除でなく修正を行います。入力フォームからカレントレコードを削除したり、または出力フォームを用いてカレントセレクション内の一部のレコードを削除することができます。

入力フォームまたは出力フォームを使用して、レコードを追加することができます。

アプリケーションモードでは"サブレコード追加"標準アクション (リストにレコード追加) またはADD RECORDCREATE RECORDコマンドを使用して、レコードを追加できます。

デザインモードでは、4Dが提供するレコード追加機能を使用して、入出力フォームでレコードを追加できます。

  • 入力フォームを使用して新規レコードを追加するには:
    1. デザインモードのレコードメニューから新規レコードコマンドを選択します。
      入力および出力フォームいずれかを使用しているときに新規レコードコマンドを選択できます。
      4Dは空の入力フォームを表示し、フォーム中の最初の入力可オブジェクトに入力カーソルを置きます。
    2. 入力可能オブジェクトにデータを入力したらTabまたはCarriage returnを押して次のエリアに移動します。
      すべてのデータを入力したら、レコードを保存できます。
    3. テンキーのEnterキーを押すか、入力フォームのOKボタンをクリックするとレコードが受け入れられます。
      : キーボードの割り当てはデータベース設定のインターフェースページで変更できます。
      レコードを受け入れると、4Dは (必要であれば値を検証し) データをデータベースに格納します。そして空の入力フォームが再び表示されます。
    4. さらにレコードを追加したい場合、データ入力とレコード受け入れ操作を繰り返します。
      または
      データの入力を終了する場合、フォーム上のキャンセルボタンをクリックするかEscキーを押します。
      : キーボードの割り当てはデータベース設定のインターフェースページで変更できます。
      すると出力フォームが表示されます。

出力フォーム上で直接レコードを追加することもできます。この場合変数や他のテーブルのフィールド、サブフォームには入力できない点に留意してください。

  • 出力フォームを使用して新規レコードを追加するには:
    1. デザインモードでレコードメニューから新規レコードをリストに追加コマンドを選択します。
      出力フォームに表示されている最後のレコードの下の先頭フィールドに入力カーソルが表示されます。
    2. フィールドにデータを入力し、TabCarriage returnキーで次のフィールドに移動します。
      注: Shift+TabShift+Carriage returnを使用するとレコードのフィールドを逆方向に移動します。
      種るよくフォームのフィールドに割り当てられているデータ検証制御はそのフィールドを選択したときに使用されます。例えば選択リストが割り当てられている場合、そのフィールドに入力カーソルが入ると、選択リストが表示されます。
    3. テンキーのEnterを押すとレコードが保存され、新しい空のレコードが作成されます。
      または
      他のレコード上のフィールドをクリックします。
      4Dは追加されたレコードの入力を受け入れます。

情報を更新する必要がある場合、または元の情報が正しくないことが判明した場合、レコードを修正する必要があります。レコードグループを更新するにはまず更新対象のレコードをカレントセレクションにしなければなりません。そのためにレコードを検索するか、出力フォーム上で対象レコードをハイライトし、サブセットとして選択します。

入力および出力フォームを使用してレコードを更新できます。出力フォームでは複数のレコードを一度に見ることができるので、一連のレコードを更新するような場合には便利です。しかし通常出力フォームはすべてのフィールドを含んでいません。また入力フォームに細かく指定されているような入力制御がないかもしれません。
他のプロセスまたは他のユーザーがレコードを更新中の場合、その編集中のレコードはロックされているといわれます。ロックされたレコードを見ることはできますが、編集することはできません。ロックされたレコードを開くとフィールドデータを見ることはできます。しかしデータを入力することはできません。

アプリケーションモードでは"サブレコード編集"標準アクション (リストフォーム中でレコードを更新) またはMODIFY RECORDコマンドでレコードを編集できます。

デザインモードでは4Dが提供する複数の機能を使用してレコードを更新できます:

  • 入力フォームを使用してレコードを更新するには:
    1. 出力フォーム中でレコードをハイライトし、レコードメニューからレコード修正を選択します。
      または
      出力フォーム中で対象レコードをダブルクリックします。
      4Dはデフォルトの入力フォームを使用してレコードを開きます。
    2. 編集するフィールドをクリックして挿入カーソルを入れ、データを更新します。
    3. OKボタンをクリックするかテンキーのEnterキーを押して更新したレコードを受け入れ、出力フォームに戻ります。
      または
      ナビゲーションボタン (前レコード, 先頭レコード, 次レコード, 最終レコード標準アクション) をクリックしてレコードを受け入れ、カレントセレクションの他のレコードに移動します。
      標準アクションナビゲーションボタンをクリックすると、カレントセレクション中でカレントレコードを移動します。
      編集をキャンセルして出力フォームに戻るにはキャンセルボタンをクリックするか、Escキーを押します。

出力フォームに表示されているデータを直接編集することも可能です。この場合変数、他のテーブルのフィールド、サブフォームにはデータ入力できない点に留意してください。
アプリケーションモードではリストフォームでのレコード更新可/不可をコントロールすることができます。

  • 出力フォームを使用してレコードを更新するには:
    1. レコードを選択し、編集するフィールド上をクリックします。
      出力フォームのフィールドが編集モードになります。
      注: デザインモードではレコードメニューからレコード修正コマンドを選択すると、入力フォームでレコードを修正できます。
    2. 新しいデータを入力しTabまたはCarriage returnキーを押します。
      4Dは変更を保存し、次のフィールドを選択します。
    3. 必要なだけ編集作業を繰り返します。
    4. フォーム上の他のレコードのフィールド上をクリックすると、編集モードを終了します。

一連のレコードに対して一定の変更を行いたい場合は、グローバル更新を行うことができます。グローバル更新を行い、面倒で時間がかかるレコードグループへの変更を自動化できます。例えば次のような処理を行いたい場合グローバル更新を実行します:

  • 在庫テーブルのすべての価格を一定の割合で変更する。
  • 数値や文字タイプのフィールドをフォーマットする。

グローバル更新は、レコードのカレントセレクションに対してフォーミュラを“適用”することによって行われます。つまりカレントセレクションの各レコードをフォーミュラを用いて変更します。

いくつかのフォーミュラの例題とそのフォーミュラが実行する機能の説明を次に示します:

  • 次のフォーミュラでは給与フィールドに1.05 を乗じています。たとえば昇給が実施される際にこのフォーミュラを使用することができます:
     [Emp]Salary :=[Emp]Salary *1.05
  • 次のフォーミュラでは、4D 関数を用いて部品IDフィールドのデータを大文字に変換しています。これにより部品IDデータのアルファベット部が大文字であることが保証されます:
     [Parts]PartID :=Uppercase([Parts]PartID)
  • 次のフォーミュラには、ローマ字名フィールドをフォーマットするユーザー作成の関数Capitalizeが含まれています。この関数はローマ字名フィールドの最初の1 桁を大文字にし、後の文字は小文字のままにしておきます:
     [Emp]LastName:=Capitalize([Emp]LastName)

グローバル更新を実行する際にユーザー作成の関数を組み込める機能は、4D の強力な特長の1 つです。フォーミュラには4Dランゲージ関数や (開発者が使用可能に指定した) プロジェクトメソッドを指定できます。セキュリティのため、フォーミュラからのプロジェクトメソッドへのアクセスは制限されています (セキュリティページ参照)。

一行を超えるフォーミュラを書くことはできません。つまり改行を挿入して二行目を書くことはできません。しかしフォーミュラエディターで利用可能に指定されたプロジェクトメソッドを使用すれば、このメソッドに複雑な処理を記述することができます。

グローバル更新を実行するには、を使用して、カレントセレクションの各レコードに適用されるフォーミュラを記述します。これを行うにはレコードメニューのフォーミュラで更新...を選択します。事前にディスク上のファイルとして保存したフォーミュラ (拡張子.4fr) をロードすることもできます。詳細はを参照してください。

アプリケーションモードではEXECUTE FORMULAコマンドを使用して直接更新フォーミュラを実行したり、EDIT FORMULAコマンドでフォーミュラエディターを表示できます。

あるレコードが無効になったり、不要となった場合、それを削除することができます。レコードは必要でも、レコードに格納された値が正確ではなくなった場合は、削除ではなく修正を実行します。

次の2 つの方法を使用し、レコードを削除することができます:

  • レコードを1 件ずつ削除 (通常入力フォームを使用)
  • 一連のレコードを一度に削除 (通常出力フォームを使用)

アプリケーションモードでは"レコード削除"や"サブレコード削除"標準コマンド、あるいはDELETE RECORDDELETE SELECTIONコマンドを使用してレコードを削除できます。

デザインモードでは編集メニューのクリアコマンドやDeleteキーでもレコードを削除できます。

警告: レコードの削除は恒久的であり、一度削除したレコードはバックアップからしか取り戻せません。レコードを削除するとき、4Dは本当に削除を実行してよいか確認するダイアログを表示します。

入力フォームからレコードを削除すると、削除を行う前に各レコードの内容を検証することができます。

  • 入力フォームを使用してレコードを削除するには:
    1. 削除するレコードを開きます。
    2. 削除ボタンをクリックしてレコードを削除します。
      入力フォームのデザインにより、削除ボタンはさまざまな形式で表現されます。デフォルトで削除ボタンにはゴミ箱アイコンが表示され、"レコード削除"標準アクションが割り当てられています。(フォームに削除ボタンがない場合もあります。)
      削除を確認するダイアログが表示されます。4Dがレコードを削除した後は、それを取り消すことはできません。
    3. 削除を実行するためにOKボタンをクリックします。
      4Dはデータベースからカレントレコードを削除し、出力フォームに戻ります。

出力フォームを使用して複数のレコードを一回の処理で削除できます。削除するレコードは出力フォーム上でハイライトされていなければなりません。

  • 出力フォームでレコードを削除するには:
    1. 削除するレコードをハイライトします。
    2. 編集メニューからクリアを選択するか、DeleteまたはBackspaceキーを押します。
      削除を確認するダイアログが表示されます。4Dがレコードを削除した後は、それを取り消すことはできません。
    3. 削除を実行するためにOKボタンをクリックします。
      ハイライトされたレコードがデータベースから削除されます。
      注: テーブルのすべてのレコードを削除するには、レコードメニューからすべてを表示を選択し、編集メニューからすべてを選択を選択、そして編集メニューからクリアを選択 (または削除キーを使用) します。

ロックされたレコードは削除できません。レコードが別のプロセスで使用されると、そのレコードはロックされます。例えばあるプロセスで修正のためにレコードを開くと、4D は別のプロセスで修正されないように、そのレコードをロックします。

4D Serverに関する注記: レコードが別のユーザーにより使用されている場合もレコードがロックされます。

レコードを削除する前に、削除しようとするレコードのセレクションを作成します。セレクションにロックされたレコードが含まれている場合、その削除処理は実行されますが、ロックされたレコードは削除されず、削除後もカレントセレクション内に残されます。これらのレコードを削除するには、レコードのロックが解除される (つまり、そのレコードが使用されなくなる) まで待たなければなりません。レコードロックテーマのコマンドを使用してこのタイプのシナリオを管理できます。

別プロセスでレコードが削除されることにより、カレントセレクションが変更される場合があります。例えばデータベースの作業中に別プロセスを開始して、テーブルからあるレコードを削除したものとします。するとそのプロセスで削除されたレコードはテーブルから永久削除されます。しかし新しいレコードのセレクションが作成されるまで、現在データベースの処理中に表示しているそのレコードに対し、テーブルへのこれらの変更が反映されない可能性があります。

この点について説明するため、あるテーブルに50 件のレコードがあり、全レコードがカレントセレクションに含まれている場合について考えてみましょう。この時点では、出力フォームのタイトルバーに“50/50 (50 件中の50 件) ”のレコードが選択されていると表示されます。別プロセスでこの中の1 レコードが削除されると、タイトルバーは“50/49 (49 件中の50 件) ”のレコードが選択されているという表示に変わります。これではテーブル内のレコード数よりも多いレコードがカレントセレクションに存在していることになります。カレントセレクションを変更すると、タイトルバーが更新されます。

削除されたレコードを修正または削除しようとすると、ダイアログボックスが表示され、そのレコードが削除されたことを知らせます。

4D Serverに関する注記: 別のユーザーにより削除されたレコードも、カレントセレクションに対して同様の影響を与えます。レコードはテーブルから削除されますが、カレントセレクションからは取り除かれません。したがって、カレントセレクションには実際にテーブルに存在する数よりも多いレコードが含まれているようにみえる場合があります。

 
プロパティ 

プロダクト: 4D
テーマ: レコードの管理

 
履歴 

 
ARTICLE USAGE

デザインリファレンス ( 4D v16)
デザインリファレンス ( 4D v16.1)
デザインリファレンス ( 4D v16.3)