POSTされる条件

解決


Dertex  2013-01-24 22:14:47  No: 43684

環境は
OS:Windows7 64bit
Delphi:Delphi4
DB:Paradox
方式:BDE
です。

Postの動作について教えていただきたいです。
ヘルプやサンプルプログラムを参考に以下のようなソースを記述しました。
begin
  for i := 1 to 6 do
  begin
    if Table1.locate('NO', i,[]) then
    begin
      if Array1[i] <> 0 then
      begin
        Table1.Edit;
        Table1NO.AsInteger := i;
        Table1DATE1.AsDateTime := Array1[i];
        Table1ZEIRITU.Value := Array2[i];
        Table1.Post;
      end else
        Table1.Delete;
    end else
    if Array1[i] <> 0 then
    begin
      Table1.Append;
      Table1NO.AsInteger := i;
      Table1DATE1.AsDateTime := Array1[i];
      Table1ZEIRITU.Value := Array2[i];
      Table1.Post;
    end;
  end;
end;

1.Table1.Postを2行とも消した場合1〜5までのデータは更新され6個目のデータは更新されませんでした。このことから、Stateが[dsEdit,dsInsert]からdsBrowseに変わる場合勝手にPostされるのでしょうか?
locateでStateがdsBrowseに変わっていました。

2.dsBrowse以外に変わる場合も勝手にPostされるのでしょうか?

3.上記ソースのTable1.Post;を両方とも消して、最後のend;の前に  Table1.Post;を1行追加しても同じ動作をすると思うのですが、どちらが一般的な書き方でしょうか。

4.Deleteの時はPostはいらないと書いてあったのですが、何故いらないのでしょうか。

以上です。よろしくお願いします。


Mr.XRAY  2013-01-25 07:07:36  No: 43685

TTable コンポーネントでは,レコードを移動すると Post されます (デフォルトの設定の場合).
レコードを削除するとレコードの位置が移動します.
したがって,Post されます.


Dertex  2013-01-28 18:36:50  No: 43686

>Mr.XRAY様
レコードが移動するとPostされるんですね。
勉強になりました、ありがとうございます。


Dertex  2013-01-28 18:37:55  No: 43687

解決を入れ忘れました。
Postは書き込むとき毎に記述していくようにしようと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加