YIBTabelでのデータ登録

解決


サトウ  2013-10-16 06:13:04  No: 45428

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を確認するとデータは間違いなく登録されています。

このような動作するのは、なぜでしょうか?
解決方法法はあるでしょうか?


サトウ  2013-10-17 07:08:57  No: 45429

失礼しました。

タイトルを間違えていました。「TIBTableでのデータ登録」でした。


igy  2013-10-17 07:44:58  No: 45430

関係ないかもしれませんが・・・

最新のアップデートは適用されてますか?


サトウ  2013-10-21 05:59:14  No: 45431

igyさん  ありがとうございます。

DelphiXE3はUpDate1でした。インターネットで検索するとUpdate2がでていましたので、最新版に更新しました。

そのために、解決したかどうかは分かりませんが、次のようにして解決できました。

1.  何回か試している最中に、たまたまDbGrid内にInsertしたデータが見えました。データが挿入されている位置が最終レコードの次でなく、ランダムな位置に挿入されていることが判明しました。Appendメソッドを使用しているので当然プライマリキーでの最終レコードの次に位置に挿入されるものと思っていましたが、そうではありませんでした。5万件くらいのデータで確かめていたので、ランダム位置の挿入されていることがすぐわかりませんでした。

2.  それでTIBTableのIndexNameにプライマリーキーを指定することによって望みどおりに表示されるようになりました。

おさわがせいたしました。


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

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






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