テーブルデータの編集が反映されない †
ページ | OpenOffice.org FAQの登録ページ |
---|---|
投稿者 | Yama |
分類 | |
優先順位 | |
状態 | |
カテゴリー | |
投稿日 | 2010-07-20 00:48:59 (火) |
OS | Windows XP SP3 |
依存するページ | |
バージョン |
メッセージ †
回答ページでは行末に「~」を付加する必要はありません |
当方、PCのリカバリを行い、新たにOOoの3.2.1をDLし、インストールしたところ、以下の事象が発生いたしました。リカバリ前のOOoのバージョンは控えていませんが、そこそこまめにバージョンアップしていましたので、それほど古いものではないと思います。
事象としては、faq/5/396 で匿名希望さんが出されているものに類似していると思われます。以前から使っていたテーブルを編集しようとしたところ、編集が反映されません。
新たなレコードの作成は問題なくできるのですが、既存レコードの内容を編集し、カーソルを別レコードに移すと、編集前の内容に戻ります。(エラーは出ません)
編集後に「現在のレコードを保存」のアイコンをクリックしても同様です。
編集は、テーブルを直接か、クエリーから抽出したものを編集しています。どちらも同事象が発生します。
先ほどのfaqを参考にして、NULL値の可否の確認や、データ型の設定を変えてみましたが、改善されませんでした。
なお、当該テーブルには、数値[NUMERIC]、テキスト[VARCHAR]、はい/いいえ[BOOLEAN]のフィールドがありますが、すべて同じ事象になります。
また、当該テーブルを含むファイルには、いくつかのテーブルがありますが、事象の発生しないテーブルもありました。
エラーが発生しないので、情報としては、上記にて正確に伝えられているか自信がありませんが、どなたかご助言いただけますでしょうか。
よろしくお願いいたします。
問題の切り分け †
M.Kamataki (2010-07-20 06:28:43 (火))
※以下の作業はオリジナルのodbファイルではなく、コピーしたodbファイルで試してください。
まず、バージョンによって動作が異なるかどうか、確認できますか。以下はOpenOffice.org Portable 3.2.0のダウンロード先です(日本語版があります)。本来はUSBフラッシュメモリへのインストールを想定していますが、ハードディスクにインストールしてもレジストリを変更しないので、今お使いの3.2.1をアンインストールしなくてもすみます。ただ同じ3.2系なので、動作は変わならないかもしれません。
http://portableapps.com/apps/office/openoffice_portable/localization
3.2.0で動作した場合は、とりあえずの解決策としてはバージョンダウンということになります。
さて、解決しない場合ですが、やはりサンプルがないとよくわかりません。当該のテーブルはレコードの更新ができないようですが、削除もできないでしょうか。削除できるようであれば、すべてのレコードを削除した問題のテーブルだけのodbファイルのサンプルを添付して欲しいと思います。また、削除できないまでも今まで表示されなかったエラーが表示されれば、そのメッセージ内容が解決につながらないかと思います。
テーブルに何らかの制約が設定されているのではないかという疑いがあるので、それが分かればよいのですが。faq/5/396は意図しないNOT NULL制約が設定されていたケースです。
切り分け作業の結果報告 †
Yama (2010-07-24 14:41:15 (土))
M.Kamataki様
ご助言いただき、ありがとうございます。いただいたご助言を元にいくつか試してみました。
まず、Portable3.2.0では、事象が発生せず、編集が可能でした。よって、3.2.1での問題の可能性が高いのでしょうか。
続いて、レコードの削除については、3.2.1では削除できませんでした。その際に、レコードによって、エラーメッセージが出る場合と出ない場合がありました。(Portble3.2.0では削除できました。)
エラーメッセージは、
指定したレコードを削除するときのエラー
Wrong data type: java.lang.NumberFormatException
といったもので、詳細を見ると
SQL ステータス:37000
エラーコード:-16
となっていました。
なお、エラーの出るレコードと出ないレコードの違いとしては、5つ目の項目(データ型はテキスト[VARCHAR])が数字のみの場合はエラーがでず、文字が含まれているとエラーが出ました。
ちなみに、レコードの新規登録はできますが、一度登録されるとそのレコードの削除・修正はできませんでした。
サンプルで、ファイルを添付させていただきました。
事象の発生しているファイル中にいくつかある中で、一番小さそうなテーブルのみを新しいファイルにコピーしたものです。コピーしても同様の事象が発生することが確認できています。
これで再度ご助力いただければ幸いです。
よろしくお願いいたします。
3.2.1がおかしいですね †
M.Kamataki (2010-07-24 17:47:39 (土))
3.2.0では問題なく、3.2.1でご報告のエラーが表示されるケースですが、OpenOffice.orgの不具合・要望データベースであるIssueTrackerを調べると以下のものがありました。(添付のOOo3.2.1-failure.zipに収録されている画像に同じエラーが見られます)
imported data corrupts table
http://ja.openoffice.org/issues/show_bug.cgi?id=112299
Yamaさんが添付していただいたtest.odbは複合プライマリキーなんですが、同じ原因かもしれません。もし、複合プライマリキーをご利用になるのなら、この問題が修正されるまで、3.2.1にはバージョンアップされないことを薦めます。データベースだけPortable版3.2.0を使うのも良いかもしれません。
なお、3.2.1上でテーブルをコピー&貼り付けして、複合プライマリキーのかわりにIDという1つのプライマリキーを設定したテーブルであれば、問題の無いテーブルになりました(下記サンプルの「NFL Card Graded test2」テーブル)。ただし、元のテーブルの「カードNo.」フィールドだけをプライマリキーに設定して、テーブルをコピー&貼り付けしてみたテーブルはレコードの内容が変化してしまいました(下記サンプルの「NFL Card Graded test3」テーブル)。
faq5_447sample.odb
3.3m1ではOKでした †
M.Kamataki (2010-07-24 18:17:52 (土))
試しにこの秋リリース予定の3.3の開発版でtest.odbを開いてみたところ、問題は起きませんでした。上記で紹介したIssueとは別の原因かもしれません。
3.3m1は以下でダウンロードしたものです。
http://download.openoffice.org/next/other.html#dev1
いずれにしてもBaseに関しては、3.2.1をスキップしたほうが良いですね。
御礼 †
Yama (2010-08-01 15:25:03 (日))
M.Kamataki様
早速ご確認いただき、ありがとうございます。
やはり3.2.1での不具合のようですね。
とりあえず、秋に3.3がリリース予定であるとのことですから、当面は3.2.0でいこうかと思います。
大変助かりました。ありがとうございました。