勉強中なので恥ずかしいのですが、AppendとPostとの違いが解りません。
DelphiのPOSTに有るヘルプを見ると「データセットを変更するメソッド(Edit,Insert,Append など)やレコード間を移動するためのメソッド(First,Last,Next,Prior など)は,自動的に Post を呼び出します。」と有りますが理解できず困っています。
英語的にはAppendは追加なのでレコードに追加(書き加える)事だと思います。一方、Postは「登録する」という事だそうです。
どう違うのでしょうか。どちらか一方記述すれば良いのではないのですか。
それとも、データベースでは違う概念なのでしょうか。教えて下さい。
テーブル(TTable)にレコードを追加する場合はApend,Insertで追加します。
たとえばTestTableなら
TestTable.Insert; またはAppend またはEdit
TestTableCode.Value := '0001';
TestTableName.Value := 'aaaaa';
TestTable.Post;
となります。
画面にDBGrirdやナビゲータボタンがあり、画面でデータを修正や追加をする場合は、対応するメソッドが実行されます。レコードを移動した時はPostが実行されます。
画面を閉じるときなどにテーブルの状態を調べ、最後に操作したレコードを確実に保存するようにします。
if TestTable.State <> dsBrowse then
TestTable.Post;
早速のご指導ありがとうございます。次の点が解らないので、重ねて教えて下さい。
TestTable.Insert; またはAppend・・・
・・・・
TestTable.Post;
とありますが、このAppendとPostの役割が解らないのです。
どちらもレコードを書き加えるという意味ではないのでしょうか。そうだとすれば同じ事を2回記述しなければならないのですか?
私の知っている別の言語ですが、WRITE(追加)、UPDAT(更新)、DLT(削除)しかなかったように思います。AppendとPostが同じ構文に有るので違いが解らないのです。初心者のため概念的で申し訳有りませんが教えて下さい。
単純に言えば、Insert,Appendは追加の準備、
postで完了ってな感じでしょうか
Appendはレコードの追加
Insertはレコードの挿入
Editはレコードの更新
です。メモリ上にあるだけと考えましょう。Cancelメソッドでなかったことにできます。
Postはこれらをテーブルに書き込む動作です。Cancelメソッドは使えなくなります。
ナビゲータボタンでこの動作が確認できます。
Deleteはすぐに削除されるのでPostは必要ありません
COBOLなら
WRITEやREWRITE、DELETEをだけですね。事前に書く事はしませんね。
別の言語って何ですか?
>とありますが、このAppendとPostの役割が解らないのです。
>どちらもレコードを書き加えるという意味ではないのでしょうか。
Appendは新しいレコードの領域が作られ、postで登録される意味合いです。
WRIETはPOSTと等しいですね。
データベースデスクトップやACCESSでテーブルをデータシートで開いた状態で、最後の行に行くと、入力の為に空の行に位置づきますよね。
この状態が、APPENDした状態ですね
行を確定していないので実際には書かれていません
行を移動して初めて実際に登録されます:POSTですね。
>それとも、データベースでは違う概念なのでしょうか。教えて下さい。
ちなみに、SQL言語であれば、insertは =登録です
■追加情報
Delphi5まで分厚いマニュアルがあり、この辺りも図入りで解説がありました。
その中に
Insert、AppendはデータセットをdsInsertモードにする(新規レコードの挿入を可能にする)と書いてあります。ファイルに保存するとは書いてありません。
=今までの説明どおり
ファイルに保存するのはPostメソッドが実行されたときだけです。
Stateはモード状態を確認できます。モードには
dsInsert =Insert,Appendメソッドを実行した時
dsEdit =Editを実行した時
dsBrowse =Open直後、Postが成功した時、Cancel、Deleteした時
などがあります。
インデックス付のテーブルの場合はInsert=Appendと考えられます。
DBGridの表示に差が出ます。
なにはともあれフォームにDBGrid、ナビゲータボタンを貼り、動作を確認することが理解の早や道です。さらにボタンにメソッドを書いて動作を確認することです。
皆さん、ありがとうございます。頭が固くなっていますが何とか理解できそうです。
皆さんのご意見を保存し何度も復唱して勉強するつもりです。
私の知っている言語ですが、今は、あまり使われなくなったIBMのRPGという言語です。現在はRPGⅣやILEーRPGというバージョンになり拡張されたようですが、私は使えません。歳がバレバレですね。(^_-)
本当にありがとうございました。これからもご指導願います。
ツイート | ![]() |