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

Q&A集[?]

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

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

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

質問コーナー

サイト内検索

分類メニュー

関連サイト


本日:1
昨日:1
総数:1397
現在:1


クエリ結果を、フィールドに格納したい。

ページOpenOffice.org FAQの登録ページ
投稿者kimura
分類
edit/refer
優先順位
edit/refer
状態
edit/refer
カテゴリー
edit/refer
投稿日2009-09-28 15:01:28 (月)
OSWindows vista
依存するページ
バージョン
edit/refer

メッセージ

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

いつも大変お世話になっています。 下記の図のように、サービスコード(テキスト型)+通し番号⇒回線IDにしたいと思っています。

sample03.jpg

続き

kimura (2009-09-28 15:04:00 (月))

クエリ―にて、下記の図のように、文字列+文字列にし、クエリ―の実行は出来たのですが、この結果をフィールドに反映させ、格納することは可能でしょうか。
また、可能な場合、どこをどうすれば(テーブルで設定するのか、フォームで設定するのか、まったく別の方法なのか)出来るのでしょうか。

sample01.jpg

※ちなみに、以前、こちらの掲示板で似たような質問した時、
プライマリキーを計算で求めるというのは、バグの温床になる恐れがあると教えていただいたのですが、
やはり避けた方がよろしいでしょうか。
重複の質問をしてしまい、大変申し訳ありませんが、会社より、出来るだけ回線IDをプライマリーにしたい(重複した場合エラーが出るように)と希望が出ていますので、再確認させてください。よろしくお願いいたします。

できると思いますが

M.Kamataki (2009-09-28 18:33:16 (月))

マクロで実現することになると思います。以前の質問でも回答したように、さらに仕様や要件が決まらないと前に進めません。サービスコード欄、通し番号欄の登録方法、登録されたレコードが削除される可能性など、詰められましたか。もう一度、本ページで明確にしてください。

通し番号の入力

M.Kamataki (2009-09-28 23:38:55 (月))

ブラウザの表示の関係で画像の右側を見落としていました。通し番号は手入力ですね。ならば、サービスコードと通し番号の2つでプライマリキーにする方法もあります。通し番号入力時に重複した場合にはエラーになります。このことはわざわざ回線IDを設けて、プライマリキーにしなくとも良いということになります。

仕様と要件

kimura (2009-09-29 09:49:16 (火))

ご指摘いただいた通り、書き足りない部分、何度も質問してしまっている事もまことに申し訳ありません。


まず、はい、改めて通し番号欄、サービスコード欄の登録方法、登録されたレコードが削除される可能性についてですが。
●サービスコード⇒別テーブル『サービスマスタ(サービスコード・サービス名)』からサービス名をリストボックスで表示させ、選択するとコードが入る。(入力時に、文字数をチェックしたいので、サービスコードはテキスト型です)
●通し番号⇒同サービスが利用されているかは、人の目レベルで確認し、手入力する。(※0で始まる4桁の文字列なので、テキスト型です)
●登録されたレコード⇒削除される可能性はありません。

>わざわざ回線IDを設けて、プライマリキーにしなくとも良い。
はい、「サービスコード」「通し番号」を足したものが「回線ID」になるので、完全にカブってしまうのですが、会社より、あえて「回線ID」を別フィールドで設けたいとのお達しがありました。(数値的な内容としては同じだが、存在として、回線IDとサービスコードは別物だから、別フィールドで作ってほしい…というのが理由です)そして「回線ID」が手入力では打ち間違いが起こるので、二つのフィールドの内容を足したものが、自動で入るような仕様に出来れば、と思っています。

まとめますと、まず「サービスコード」を選び、「通し番号」を入力したら、「回線ID」フィールドに、二つの数字が合わさったものが、
自動で入り、そのデータが「回線ID」フィールドに格納されればいいなという感じです。(ですので、おっしゃっていただいたように、通し番号入力時に重複した場合にはエラーになる仕様に出来ればと思っています。)

フォームで表示

M.Kamataki (2009-09-29 12:21:44 (火))

以下のサンプルは「サービスコード」「通し番号」を入力後、「レコード保存」ボタンをクリックすれば、「回線ID」欄にクエリーの結果が表示されます。「サービスコード」「通し番号」の2つのフィールドをプライマリキーに設定しているので、通し番号入力時に重複があれば英語のエラーダイアログが表示されます。このように表示するだけならクエリーで可能です。

filefaq5_86_1.odb

なお、q1クエリーを対象にフォームウィザードで作成後、フォームの編集で「回線ID」のテキストボックスの属性で「データ」タブの「入力が必要」欄を「いいえ」に変更してあります。q2クエリーで現在のサービスコードごとの通し番号の最大値を確認できます。

もちろんご要望通り、「回線ID」フィールドをテーブルに設けるのは可能ですが、マクロの作成、その後のメンテナンスはご自身で行わなければなりません。そこまでご検討されていますか。

>●登録されたレコード⇒削除される可能性はありません。

とのことなので、クエリーで求められるのなら、フォーム、レポートなどでも常に表示や印刷は可能になります。なので、わたしは特にテーブルに「回線ID」フィールドを設ける必要性を感じません。この点はご意見がある方がいらっしゃれば、お願いします。

補足

M.Kamataki (2009-09-29 13:41:00 (火))

先ほどのサンプルですが、「サービスコード」「通し番号」の2つのフィールドをプライマリキーに設定しているので、これ以上のプライマリキー設定はできません。「通し番号」入力時に「重複エラー」を表示させるためには、2つのフィールドをプライマリキーに設定する以外に方法はないと思います。「通し番号入力時に重複エラー」と「回線ID入力時に重複エラー」を同時に実現するというのはプライマリキーの設定ではできないことになります。

したがって「回線ID」フィールドにも「重複エラー」を表示させるためには、ユニーク制限を利用することになりますね。自動での表示(クエリーかマクロかは別にして)を想定していますから、ユニーク制限は必要ないと思いますが、念のため補足しておきます。

クエリーで求めることになりました。

kimura (2009-09-30 10:01:56 (水))

ありがとうございます!
社内で話合いをし、教えていただいた通り「サービスコード」「通し番号」の2つのフィールドをプライマリキーに設定し、「回線ID」を表示させる方法で進めることとなりました。
現在のサービスコードごとの通し番号の最大値を確認できるクエリーまで作っていただき、心から感謝しています。
本当にいつも何からなにまでありがとうございます。

お名前:
題名:


添付ファイル: filefaq5_86_1.odb 1145件 [詳細] filesample01.jpg 690件 [詳細] filesample03.jpg 708件 [詳細]