WinVista+Delphi2010です。
いままで何の問題もなかったTTableにIndexNameのプロパティーで切り替え動作ができなくなってしまいました。
例として顧客番号順(プライマリー)からふりがな順に切り替えるのですが、DBGridでみる限り並び変わらないという現象です。
プログラム更新中に何か触ったとしか思えないのですが、心当たりがありません。
漠然とした質問になりますが、経験された方いませんでしょうか。
データーベースの名前がありませんが、何を使っているのでしょうか?
もう、TTableは過去のファイルベースデーターベースのためのもので、
SQLを使えば、問題も出ません。
HOtaさん
データベースを書くのを忘れました。データベースはParadoxです。
最近ではTTableを使うのはParadoxぐらいなので、つい忘れました。
過去のもの、十分承知しています。
過去資産の移行は順次進めているところです。しかしparadoxの型にうまくはまるものがなく、ソースの書きなおしにうんざりです。MySQLやInterBaseが良さそうですが、多額の経費やGPLなどの問題が発生するので移行が進みません。
費用のかからないローカルデータベースがなくなることで、アマプログラマーの多いDelphiには致命的でしょうね。
いまさらParadoxですが。
Paradoxテーブルのインデックスファイルそのものが壊れている
可能性があります。
以前、インデックスファイルをボタンで切り替えるプログラムを
つくったことがありますが、インデックスファイルが壊れたとき、
その切り替えができなくなりました。
このときは、インデックスファイルを再作成して解決しました。
シャカトウさん
1.インデックスが壊れていると、エラーメっセージが表示されますが、表示されない
2.1つ前のバージョンで実行するとちゃんと動くし、インデックスも切り替わる。もちろん同じファイルを読みにいく。
3.旧版のプロジェクトを読むと正常にコンパイルでき、動作も正常
4.今回バージョンもコンパイルエラーなし、起動も正常、インデックスを切り替えても変わらない
Delphi2010でBDEを扱っているが、今まで特に問題なかった。
長年Delphiを使っているが、今回の現象は初めてです。
> MySQLやInterBaseが良さそうですが、
> 多額の経費やGPLなどの問題が発生するので移行が進みません。
Firebird がありますよ。DBX (Ent 以上) または IBX で接続可能です。
http://www.firebirdsql.org/
http://ht-deko.minim.ne.jp/tech040.html#tech074
http://ht-deko.minim.ne.jp/tech045.html#tech091
http://edn.embarcadero.com/article/images/40857/a4.pdf
P.90 辺りから IBX + Firebird の話があります。
http://edn.embarcadero.com/jp/article/36548
Firebird は Interbase に限りなく近いので、この資料が役に立つと思います。
どこかで IndexFieldNames プロパティを指定しているとかは、ないですか?
igyさん、遅くなりました
IndexFieldNamesは起動時にプライマリーキーとして使用しています。
フリガナ順に変える場合はIndexNameで指定します。
これで一方を指定すれば、他方が消えますので問題はないと思います。
Delphi2よりこの仕様は変わっていないと思います。また他のプロジェクトで同じ手法で正常に動作しております。
プログラム自体に問題がないとすると、
その Paradoxテーブル と同じ構成のテーブルをテスト用に作成してみて、
それで試してみるとか・・・
データベースのシステムで新たにDBを追加する方法
https://www.petitmonte.com/bbs/answers?question_id=4803
で、かず さんが挙げている DTUTIL32.EXE で、テーブルが破損していないか
確認してみるとか・・・
別のOSで動くか確認するとか・・・
あたりでしょうか?
igyさん
同じデータベースを旧バージョンで試すと動くのでデータベースはもんだいないようです。
今のところ全く分からないので、旧バージョンから時間をかけて直すのかなと思っています。
ツイート | ![]() |