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

Q&A集[?]

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

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

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

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:0
総数:2389
現在:7


サブフォームにリンクしたサブフォームを作りたい

ページOpenOffice.org FAQの登録ページ
投稿者urudakara
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2010-05-26 12:48:49 (水)
OSubuntu
依存するページ
バージョン
edit/refer

メッセージ

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

こんにちは。まだ分からない事ばかりなのでよろしくお願いします。

文章では中々うまく表現できないので製作途中のデータベースを添付します。

3つテーブルがありまして、それを元にクエリーを生成しています。
基本的にはテーブル構成がそのまま維持されているのですが、クエリー繁殖情報だけは
繁殖識別番号の末尾に産次のフィールドを結合して産次識別番号というフィールドを作っています。

個体識別番号 1←多 繁殖識別番号((産次識別番号) 1←多 産次識別番号)

上記の様な関係のフォームを作りたいと思っていますがうまく出来ません。

クエリで作ると新規のレコードが追加出来なくなりました。

最終的には産次情報のサブフォームにデータ入力するとそれを繁殖情報に記録するか
ダイアログで聞いてyesなら 繁殖情報の受精日・妊鑑日・妊鑑結果・妊鑑備考フィールドに
転記されるというフォームを実現しようと思っています。

何かいいアイディアがあれば教えて頂きたいと思います。
よろしくおねがいします。


すみません

urudakara (2010-05-26 12:53:55 (水))

同じ質問を連投してしまいました。
どうもスミマセンでした。

とりあえず

M.Kamataki (2010-05-26 13:44:13 (水))

382が最新のご質問でしたので、380へ上書きし、381は削除しました。

サブフォームの作成方法

M.Kamataki (2010-05-26 17:06:34 (水))

牛群管理.odb を拝見しました。

>個体識別番号 1←多 繁殖識別番号((産次識別番号) 1←多 産次識別番号)

の関係とすると、下図の「フォームナビゲータ」を見る限り、各フォームの関係がおかしいです。(「フォームナビゲータ」は、下図の赤枠の「フォームナビゲータ」ボタンで表示できます)

faq5_380_1.jpg

図の「フォーム 1」というのが、「クエリー_産次情報」に割り当てられていますが、上記の関係であれば、「フォーム 1」は「クエリー_繁殖情報」が割り当てられた「フォーム」の下に置かれなければいけません。

「フォーム 1」をマウスでドロップして下図のような構成に変更し、「フォームの属性」ダイアログの「データ」タブの「リンク元」、「リンク先」を設定すれば良いと思います。

faq5_380_2.jpg

サブフォームは1つまではフォームウィザードで作成できますが、2つ目以降は編集で追加しないといけません。今回のケースとは異なるサブフォーム構成ですが、faq/3/98「BASEでふたつのサブフォームをメインフォームに挿入したい。」も参考にしてください。

なお、最初の図のように「フォーム」、「テーブルコントロール 1」と同じ名称のコントロールが2つずつ存在しています。

>最終的には産次情報のサブフォームにデータ入力するとそれを繁殖情報に記録するか
>ダイアログで聞いてyesなら 繁殖情報の受精日・妊鑑日・妊鑑結果・妊鑑備考フィールドに
>転記されるというフォームを実現しようと思っています。

これらを実現するには、マクロを使う必要があるかもしれません。コントロールの名称を利用するので、ユニークなコントロール名を付けるよう気をつけてください。

実現出来ました!

urudakara (2010-05-27 05:17:46 (木))

すぐにご回答頂きありがとうございました。

フォームナビゲータという機能を使えば簡単に出来るんですね。
私の思い描いていた動作をするようになりました。

またデータ入力を確認後自動で転記する件ですが、マクロを使わないといけないということなので、
色々検索しましたが、一朝一夕ではいかないような感じがしました。
かなり勉強しないと難しいのかもしれませんね・・・。

本当は可能な限りマクロを使うことは避けたいなあと思い、
必要な情報は何なのかテーブル・クエリの構成の部分から見直してみたいと思います。
ただマクロを使うにしても使わないにしてもコントロールに同じ名前が有るというのは
混同して無用なトラブルを生むような気がしましたので一目で分かるような名前はつけないとと反省しました。
マクロの件は後々別件で投稿しようと思います。


ここの掲示板の操作に不慣れなため見にくい投稿になってしまいました。
これからも度々利用させていただくことになると思いますのでよろしくお願いします。
これで完了とさせて頂きます。

レコードの追加が出来ないのですが・・・

urudakara (2010-05-28 13:04:23 (金))

完了にしていたのに再質問してすみません

指摘していただいたようにフォームを修正したのですが、産次情報にレコードを追加できませんでした。
修正したファイルとエラーメッセージの画像を添付します。
設定が悪いのでしょうか?

よろしくおねがいします。

エラー内容で解決法がわかる

M.Kamataki (2010-05-28 14:49:13 (金))

「Attempt to insert null into a non-nullable column: column: ID table: 産次情報 in statement[SQL命令]」とは、SQL命令の中で「産次情報」テーブルの非NULLなIDフィールドに対して、NULL値のインサートが試みられた」ということです。簡単な英語ですからわかりますよね。NULLとは、データベースでは未入力状態ということです。

「産次情報」テーブルのIDフィールドには、プライマリーキー(主キー)制約が設定されてますから、同時にNOT NULL制約にもなっています。ところが、フォームにはIDフィールドに対する入力欄がないので、上記のSQL命令ではIDフィールドに対してNULLを挿入しようとした、ということになってしまっています。

この問題を防ぐには、フォームにIDフィールドの入力欄を設けるのも1つの方法ですが、「産次情報」テーブルのIDフィールドの「自動入力値」を「はい」にしておくと良いと思います。「繁殖情報」テーブルのIDフィールドの「自動入力値」は「はい」になっていますから、これと同じにしておくということです。

このようにエラーの内容で解決方法がわかるようになりましょうね。また、「データベース not null制約」というキーワードで、ググってみておいてください。

初歩的な設定の不備でした。

urudakara (2010-05-29 14:37:28 (土))

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

指摘された点を直してみたらすんなり動きました。
出てきたエラーメッセージが英語であったため見た瞬間に諦めたのがよくありませんでした。
初歩的な設定のミスだったんですね。
今後は英語も単語を調べ意味をわかるように努力します。
ただ、また簡単な事でも質問するかもしれませんのでよろしくおねがいします。

ちなみにもう一台ubuntuのマシンが有るのですが、それにはopenoffice3.1がインストールされています。
そちらには日本語でエラーメッセージが出ました。
バージョンによってエラーメッセージも違うんですね。
色々な意味で勉強になりました。

それではこれで完了にしたいと思います。
ありがとうございました。

お名前:
題名:


添付ファイル: filefaq_380_3.jpg 462件 [詳細] file牛群管理 (修正後).odb 517件 [詳細] filefaq5_380_2.jpg 498件 [詳細] filefaq5_380_1.jpg 453件 [詳細] file牛群管理.odb 517件 [詳細]