TIBTableでのデータ登録について疑問点があります。
是非、よろしくお願いいたします。
環境は、Win-Xp Pro、DelphiXe3 Proです。
IBXを利用し、DBはFirebird embeded 2.5です。
フォームに必要なコンポーネントを配し
procedure TForm4.Button1Click(Sender: TObject);
begin
IBTable1.Append;
IBTable1.Fields[0].AsInteger := StrToInt(Edit1.Text); // PrimaryKey
IBTable1.Fields[1].AsString := Edit2.Text;
IBTable1.Fields[2].AsDateTime := StrToDateTime(Edit3.Text);
IBTable1.Fields[3] := edit4.Text;
IBTable1.Post;
IBTransaction1.CommitRetaining;
end:
としたときに、Button1をClickするとIBTable1に接続したDBGridにPostしたデータが表示され登録されていることが確認できます。
しかし、一旦プログラムを閉じて、再度プログラムを立ち上げたとき、前回登録したデータがDBGridに表示されません。
IBExpertでDBを確認するとデータは間違いなく登録されています。
このような動作するのは、なぜでしょうか?
解決方法法はあるでしょうか?
失礼しました。
タイトルを間違えていました。「TIBTableでのデータ登録」でした。
関係ないかもしれませんが・・・
最新のアップデートは適用されてますか?
igyさん ありがとうございます。
DelphiXE3はUpDate1でした。インターネットで検索するとUpdate2がでていましたので、最新版に更新しました。
そのために、解決したかどうかは分かりませんが、次のようにして解決できました。
1. 何回か試している最中に、たまたまDbGrid内にInsertしたデータが見えました。データが挿入されている位置が最終レコードの次でなく、ランダムな位置に挿入されていることが判明しました。Appendメソッドを使用しているので当然プライマリキーでの最終レコードの次に位置に挿入されるものと思っていましたが、そうではありませんでした。5万件くらいのデータで確かめていたので、ランダム位置の挿入されていることがすぐわかりませんでした。
2. それでTIBTableのIndexNameにプライマリーキーを指定することによって望みどおりに表示されるようになりました。
おさわがせいたしました。
ツイート | ![]() |