「Web出版サイト」ベータ公開

Q&A集[?]

当サイトでのご質問の受付は終了しました

すべてのコンテンツを読み込み専用としたため、回答欄からも投稿できません

Apache OpenOffice/LibreOfficeのご質問はそれぞれのフォーラムへご投稿ください

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:1
総数:2144
現在:7


自動入力値が+1にならない

ページOpenOffice.org FAQの登録ページ
投稿者santa
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2009-08-05 12:17:44 (水)
OSvista
依存するページ
バージョン
edit/refer

メッセージ

回答ページでは行末に「~」を付加する必要はありません

請求書を作成しています。
請求書No(プライクマリキー)を自動入力値にしているのですが
実際入力してみると、次のレコードの値が+3になってしまいます。

毎回入力しなおしていますが、
治る方法があれば教えてください。よろしくお願いします。


確認できません

M.Kamataki (2009-08-05 17:41:04 (水))

Windows XPと3.0.1のBaseの組み合わせで調べましたが、確認できません。標準データベースのHSQLDBでは、「自動入力値」の設定を「はい」にすると「0」から「+1」ずつ値が増えた番号になりました。

問題が再現する公開可能なサンプルは作成できますでしょうか。ファイルの添付方法は「当サイトの使い方/高度な使い方」をご覧ください。

レコード削除

santa (2009-08-06 13:01:34 (木))

ありがとうございます。添付いたしましたが
レコードを削除した分が次へプラスされていることがわかりました。

削除したレコードをリセット?する方法はあるのでしょうか?

自動入力値である必要は?

M.Kamataki (2009-08-06 17:09:38 (木))

削除したレコードをリセットする方法は、いくつかあると思います。その前にもう一度考えを整理しましょう。もしかすると「請求書No」フィールドが自動入力値である必要はないのではと思いますが、どうでしょうか。

自動入力値を設定したフィールドの動作ですが、削除したレコードの番号は欠番になります。これはBaseが標準で利用しているデータベースHSQLDBのプライマリキーの基本的な動作です。

さて、「請求書No」で欠番が許されないとすれば、自動入力値以外の方法で「請求書No」フィールドを設定しないといけません。これはテーブル設計の間違いではないでしょうか。また、プライマリキーは「請求書No」ではなく、他のユニークな番号の管理用フィールドを用意したほうが良いかもしれません。

単純に手入力するか、または自動採番したいのなら、faq/4/1529「番号の自動入力について(最大値+1で処理したい)」で紹介している方法が目的にかなうのではと思います。

注意:faq/4/1529のサンプルデータベースは、3.0〜3.0.1用です。マクロを使って自動採番を実現しているので、3.1以上をお使いの方は移行を促すダイアログが表示されます。ただし移行しなくても動作に支障はありません。

クエリーで自動採番

M.Kamataki (2009-08-06 17:48:55 (木))

請求書.odbの「請求書No.」を仮に「請求書キー」に変更し、クエリーで自動的に90001から連続する「請求書No.」を発行するなら、次のクエリーでいけると思います。仮にプライマリキーの「請求書キー」に欠番があっても、「請求書No.」は90001からの連続した番号になるはず。

SELECT 
( SELECT COUNT( * ) FROM "請求書入力" AS "TMP" 
WHERE "TMP"."請求書キー" <= "請求書入力"."請求書キー" ) + 90000 
AS "請求書No.", 
"請求書入力".* 
FROM "請求書入力"

クエリで自動採番の方向でいきたいと思います

santa (2009-08-07 16:28:06 (金))

ありがとうございます。
確かに、自動入力値にすることもないような気がしますが・・
前はファイルメーカーで自動で採っていたので、そちらのほうがいいかと思ったので・・。
(そちらもレコードを削除すると番号は確かに飛んでいました。
削除しないよう気をつけながら入力していました)

クエリを変更しつつ、いろいろといじっていましたら、
「読み取り専用」となってしまい、レコードの追加ができなくなって
しまいました・・これを治す方法はありますでしょうか?

データの追加、変更、削除 すべて「はい」を選択してあるのですが・・。

初心者で申し訳ありません。こちらについてもなにか分かりましたら教えてください。

クエリーで読み取り専用となる場合

M.Kamataki (2009-08-07 18:16:41 (金))

1つのテーブルから作成したクエリーでは、プライマリキーを含まないと「読み取り専用」になります。また、2つ以上のテーブルから作成したクエリーも「読み取り専用」になります。後者の場合は、現状、治すことはできません。以下を参考にしてください。

  • faq/4/694「Baseの複数テーブル対象に、フォームでデータを編集する方法」
  • faq/4/902「複数テーブルから成るクエリーのデータ更新」

ありがとうございます

santa (2009-08-11 14:53:44 (火))

お礼が遅くなって申し訳ありません。
そういうことだったのですね。
プライマリキーを再度含んで保存したら新しいレコードを
追加することができました。

いろいろと調べながら引き続き作りたいと思います。
今回は完了としてください。

ありがとうございました。

ページ番号を変更しました

M.Kamataki (2009-08-27 16:47:03 (木))

faq/5/26にページ番号を変えました。faq/5/3をご覧ください。

お名前:
題名:


添付ファイル: file請求書.odb 571件 [詳細]