現在でも Base のテーブル編集時に行の挿入はできない?

LibreOffice Base で、ローカル PC 上に、デフォルトのデータベースシステム (HSQLDB) で、データベースを構築中です。

  • ローカル PC: Windows10 機
  • LibreOffice Base: バージョン 5.3.4.2 (現時点での最新の安定版)

テーブルを編集中に、すでに設定がある 2 つの行の間に新しい行を挿入するため、[ 右クリック → 行の挿入 ] をしたところ、選択している行の次の行にではなく、すでに設定がある行のうち一番下の行の次の行に、行が挿入されてしまいます。

この件についてネットを検索したところ、OpenOffice.org の Q&A サイトに、下記のような記述がありました。しかし、2006 年の記事ですからかなり昔です。

  1. ページ概要: 2006-05-18 投稿 「フィールドを並べ替えられない?」 (faq/3/12 - OpenOffice.org Q&A)
  2. 回答要旨: 「HSQLDB ではできない。なぜなら、OOo の開発陣のコメントにあるように、「ほとんどのデータベースが2つの異なるフィールド間の挿入を許可しない」から。代わりの方法として、新規にテーブルを作成し、それにフィールドを一つ一つコピー&ペーストするという方法がある」

もしそうだとすれば、データベースの作成者は、テーブル編集時に、行の挿入が必要になるたびに新しいテーブルを作ってリレーション関係を設定し直すか、あるいは、後々行の挿入が必要になることを考慮して、初めから行を飛び飛びに (昔
BASIC でコーディングする時に行番号を 10 刻みで書いていったような原理で) 作っていくかの、いずれかしかないということになります。

しかし、上記 Q&A の日付は 10 年以上前ですので、現在ではもっと良い方法が組み込まれているかもしれません。

そこで質問ですが、LibreOffice Base では、現在も、この「テーブル編集時に行の挿入ができない」という仕様を、上記のような「裏技」を使うことなしに、回避することはできないのでしょうか?

どうかよろしくお願いいたします。

  • ローカル PC: Windows7 機
  • LibreOffice Base: バージョン 6.0.7.3 (現時点での最新の安定版)



    です。

    すみません。回答ではありません。感謝のコメントです。



    同じ疑問を抱えて検索してたら、この質問に出会いました。

    無理だということが理解できました。

    答えを求めて、これ以上検索するという無駄な時間を使わずにすみます。

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



    フォーム側の配置で処理すれば良いのでしょうが、

    設備ごとの全部品一覧とか、項目の多いテーブルを作成せざるを得ないときには不便ですね。


LibreBaseも見てみたのですが、マイクロソフトAccessのとき、住所、氏名、電話番号・・・というフィールドを作成し入力後・・・「あ、ふりがな忘れた」で後からフィールドを作成できないので、転記クエリーを作りました。

とても、とても面倒なんで空白のフィールドを作りました。

住所、氏名、生年月日、備考、ふりがな・・・・

表示でツールバーの、フォームデザインをクリックし、そのツールバーからデザインモードをクリック。
該当するコントロール(例えばテキストボックス)を右クリック、「コントロール」をクリックすると、フィールド用コントロールのプロパティーが設定できます。(LibreOffice6.1.3.2)

その項目で、有効にする(Enable)を「はい」から「無効」にすると、存在はするが表示しない。になります。

さらに、「タブの順序」をクリック。実際は12番めフィールドでも、3番めにタブ順を変更できるのは、マイクロソフトアクセスと同じです。

要は、実際のデータの並び順と、入力順を変更出来ます。

データ入力前なら、この手で入力順を変えられフィールドの一番うしろに新しいフィールドを追加できます。
入力したあとで、フィールドを追加するのは面倒でした。

入力後、行の挿入は出来ない方向で考えて居ます。

と、LibreOfficeのBASEで、レコードを作成。1件、2件データを入れて、その後テーブルにレコードを追加・・・出来てしまった。Formを修正してみる。

1) レコード作成、フォームでデータを2つ入れる。

2) 1フィールド追加、データを追記するものの、追加したフィールドは出てない(当たり前)

3) 第2レコードに、追加したフィールドのデータを表示させるが、空白のまま。

4) 空白のフィールドにデータを入れてみる。

テーブルでレコードを表示してみる。

居る。

順番は、タブストップで変える。

編集で、フォームデザインというところがあり、そこに「タブストップ」というアイコンがあります、(Ver6.1)

変更し、保存。入力モードで適応を確認しました。

4年間sugestionが無いそうですが。
現在ver.7.3のtable編集モードで挿入は出来ておりません。
次の手順で処理をしております。
①挿入したい行から下にある行をシフトキー+最終行まで選択し一括切り取ります。
任意の行で行挿入を押すと最終行へ飛んでいきます(皆さんが困っている挿入されずに最終行に飛ぶ動作です)。
③追加したいフィールドを新規追加入力します。
④その次の行を選択し、メニューバーの編集(E)の貼り付けで挿入行以下切り取った複数行が復活します。
一つ一つ貼り付けるよりは楽でしょうか。
新しい情報があれば教えてください

並び替えが必要になる場合は、私はテーブルそのものでなくクエリを作ってそちらで操作するようにしています。
リレーションの設定が、クエリの画面でやらないといけなくなって面倒ではありますが。

それかフォーム画面上で項目の順序入れ替えるとかタブ順設定し直すとかが無難だと思います。
テーブル下手に削除して作り直してると(特にプライマリキーがらみ)いろいろエラーに苦しめられたりそれまで入力したデータがパーになったり、いい思い出がありません…。

1 Like

門外漢が釈迦に説法となってしまうようなら申し訳ないのですが…。
基本に立ち返って。一般に「データベース」という種類のソフトウェアにおける「テーブル」では、データは逐次末尾に追加されていく一方であり、「行を挿入する」ような、並び順を人為的に操作するという概念は持たないのではないかと思えます。データの並べ替えを行うのは、既に回答やコメントがなされているように、基本的には「クエリー」(や「ビュー」?)の役割かと。クエリーで並べ替えたテーブルを新たに作るなどの操作は出来るかもですが(もしかすると元のテーブルを置き換えたり出来るのかな? まぁ、データを書き出し・再読み込みするなど、やりようはいろいろありそうですが)。
「表計算ソフト」とは根本的に異なります。

ちなみに、冒頭質問で引用されているFAQですが。
目下リンク先が「Internal Server Error」で元記事を読めていないのですが、「フィールド」は行のことではなく項目(テーブルでいえば列)のことではないかと推察します。
データベース一般かどうかは定かでありませんが(データベースは馴染みが薄くて…)、私の経験したデータベースでは、確かに列順もシンプルには操作できず、テーブルの作り変えが必要だったような気がします。
リレーションシップはどうするんだったっけかなぁ…。

1 Like