質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

2回答

1871閲覧

ACCESSのフォーム上で、同じフィールドに複数の入力欄を設け、情報をつなげるにはどのようにしたら良いでしょうか。

onemu

総合スコア2

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/09/23 12:16

編集2020/09/24 02:01

Access2019にて顧客対応用のソフトを作成しています。
現在、顧客の対応テーブルがあり、それを基に顧客の対応内容を入力するフォームがあります。
そこに対応内容を入力するのですが、同じ対応件名で2回目以降の問い合わせがあった場合に、「追加ボタン」のようなものを設置し、入力枠だけ別に追加表示し、入力できるようなものを検討しております。

現状のテーブル構成(各フィールド):
対応履歴ID(オートナンバー)、日付(日付/時刻型)、件名(短いテキスト)、対応内容(長いテキスト)、顧客名(短いテキスト)

フォームは連結フォームで、単票フォームです。

イメージ
対応内容1
{入力ボックス}

があり、

「追加ボタン」を押すと、

対応内容2
{入力ボックス2}

が表示されるようなものを作りたいと考えています。

恐らく、フィールドを追加するというのはできないと思うので、
既存の入力内容が入っているフィールドに、入力ボックス2で記載した内容を追記するというやり方になると思うのですが、
とっかかりが分からないので、ご教授いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2020/09/23 13:20

現状のテーブル構成を提示してください。 また、フォームは非連結フォームですか、連結フォームですか。 また、連結フォームの場合、単票フォームですか、連結フォームですか。
onemu

2020/09/24 02:02

ご返信ありがとうございます。 上記に、追記しましたので、ご確認おねがいいたします。
guest

回答2

0

同じフィールドの内容をルールに基づいて分割して表示する事は可能です。
但し、その項目は連結にはできませんので、別途その項目を繋いだもので更新する必要が生じます。

例えば、対応内容を(,)区切りで複数の項目に分割するとすると、以下のファンクションを用いて分割は可能です。

VBA

1Public Function MySplit(Expression, Delimiter, Position) 2 Dim Token() As String 3 If Nz(Expression) = "" Then Exit Function 4 5 Token = Split(Expression, Delimiter, -1) 6 If Position < 1 Or Position > UBound(Token) + 1 Then Exit Function 7 MySplit = Token(Position - 1) 8End Function

以下の様に使用します。

MySplit([対応内容], ",", 1) MySplit([対応内容], ",", 2)

投稿2020/09/25 06:06

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onemu

2020/10/06 02:30 編集

ご返信が遅くなり申し訳ございません。たいへん参考になりました。どうもありがとうございます。
guest

0

Accessは一応、リレーショナルデータベースソフトなので、エクセルとかワードとは根本的に異なるソフトです。
まずは、テーブル設計を、リレーショナルデータベース(RDB)の基本に沿ったものにしないと使い物になりません。

RDBのテーブル設計の基本は「正規化」です。ここから説明していくここのスペースでは足りないので、「テーブク 正規化」をキーワードにWEB検索するか、データベースの入門書でおいおい勉強してもらうとして、とりあえず、現状のテーブルを下記のように作り変えてください。

テーブル名
顧客マスター

フィールド
------
顧客ID 数値型 主キー
顧客名
顧客名カナ
電話番号
メールアドレス
住所
・・・
・・・
その他顧客に関する必要な情報のフィールドを追加してください。

テーブル名
顧客対応履歴

フィールド
------
対応履歴ID オートナンバー 主キー
日付    日付/時刻型
件名    短いテキスト
対応内容  長いテキスト
顧客ID   数値型

リレーションシップで上記の2つのテーブルを 顧客ID で結合します。

リレーションシップの設定と効果 - もう一度学ぶMS-Access

この「顧客マスター」と「顧客対応履歴」は一対多の関係のテーブルといいます。このようなテーブルの入力フォームはメイン/サブフォーム形式のにするのが一般的です。

リレーションシップが作成してあれば、フォームウィザードで簡単に作成できます。
下記のリンクを参考に作成してください。

Accessのフォームのメイン/サブフォームとは | できるネット

これで顧客毎の対応履歴を閲覧、更新できます。
まずは、ここまで作成してみてください。

Accessでは、入力ボックスを追加していくというような設計はしません。
行(履歴)を追加していくというような作業は帳票フォームで、新規行にデータを入力していく形になります。

追加ボタンを押したとき、カレントと項目名を同じにしたいときは、VBAを使うことになります。まずは、上記で説明したことができてからですね。

追記

一つの件名で複数の対応履歴が必要なら、
「顧客対応履歴」テーブルをさらに分割すべきですね。
下記のような設計になります。

顧客対応件名

  • 対応件名ID 主キー
  • 初回日付
  • 件名
  • 顧客ID 外部キー

顧客対応内容履歴

  • 対応内容履歴 主キー
  • 対応件名ID 外部キー
  • 日付
  • 対応内容

投稿2020/09/24 04:57

編集2020/09/24 12:50
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onemu

2020/09/24 11:30

ご返信ありがとうございます。少し説明を省略してしまったのですが、上記で示していただいたようにリレーションシップで上記の2つのテーブルを 顧客ID で結合されています。 やりたいことは、同じ件で、対応内容を2回目以降に、追記したいケースに追記しやすくしたいと思いまして...
hatena19

2020/09/24 11:44 編集

Accessの質問に回答するにはテーブル構成は必須ですので、現状のテーブル構成を質問に追記してください。 あと、メイン/サブフォーム形式のフォームはできていますか。 あるいは、現状のフォームのスクリーンショットの画像を質問に追記してもらえますか。
onemu

2020/10/06 02:32

ご返信が遅くなり申し訳ございません。 なるほどです。件名を分けて別のテーブルにするという発想がありませんでした。 どうもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問