環境は
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はいらないと書いてあったのですが、何故いらないのでしょうか。
以上です。よろしくお願いします。
TTable コンポーネントでは,レコードを移動すると Post されます (デフォルトの設定の場合).
レコードを削除するとレコードの位置が移動します.
したがって,Post されます.
>Mr.XRAY様
レコードが移動するとPostされるんですね。
勉強になりました、ありがとうございます。
解決を入れ忘れました。
Postは書き込むとき毎に記述していくようにしようと思います。
ツイート | ![]() |